[C#2.0] Multithreading Afficher une folderbrowserdialog
Bonjour
Dans mon appli je fais du multithreading en fait y en a 2, car j'ai un traitement qui me frize complètement mon UI. Alors j'effectue ce traitement sur un autre thread jusque la tout va bien. Mais à un moment du traitement l'utilisateur doit choisir un répertoire donc j'affiche une folderbrowserdialog depuis le thread qui effectue le traitement; et la sa plante j'ai le message suivant:
Citation:
Le thread Actuel doit être en mode STA, avant que des appels OLE puissent être effectuées. Assurez-vous que votre fonction Main est marquée STAThreadAttribute. Cette exception n'est déclenchée que si un débogueur est attaché au processus.
Voici le code qui effectue cette opération:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| private string RechercheDossier(string NomDoc, bool DossierOk)
{
bool rep = false;
string Dossier=null;
if (DossierOk==false)
{
MessageBox.Show("Le chemin pour : " + NomDoc + " n'existe pas. Sélectionner un chemin valide",
"CHEMIN ACCES ERRONNE", MessageBoxButtons.OK, MessageBoxIcon.Information);
FolderBrowserDialog1.SelectedPath = ConfigurationManager.AppSettings[@"DirPathStd"];
FolderBrowserDialog1.Description = "DOSSIER NON TROUVE";
FolderBrowserDialog1.ShowNewFolderButton = false;
while (!rep)
{
if (FolderBrowserDialog1.ShowDialog()==DialogResult.OK)
{
Dossier = FolderBrowserDialog1.SelectedPath;
rep = true;
}
}
}
else
{
if (_ApplyDefaultValue)
{
MessageBox.Show("Le document : " + NomDoc + " n'a pas été trouvé. Vérifiez l'orthographe ou l'ajouter dans la base",
"DOCUMENT NON TROUVE", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Sélectionnez un répertoire pour vos exports!", "EXPORT A LA DEMANDE",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
FolderBrowserDialog1.SelectedPath = ConfigurationManager.AppSettings[@"DirPathStd"];
FolderBrowserDialog1.Description = "SELECTIONNEZ UN REPERTOIRE";
FolderBrowserDialog1.ShowNewFolderButton = false;
while (!rep)
{
if (FolderBrowserDialog1.ShowDialog()==DialogResult.OK)
{
Dossier = FolderBrowserDialog1.SelectedPath;
rep = true;
}
}
}
return (Dossier);
} |
Sans doute question bête mais je sèche alors help