Bonsoir,
J'ai crée un BackgroundWorker pour faire un traitement et j'ai une gif circulaire qui tourne pendant le traitement.
Cependant, lorsque le traitement est finie, le gif ne veut pas disparaitre :'( .
Si je le mets dans l'évènement DoWork, il y a un conflit de thread. Et de plus, la méthode RunWorkerCompleted ne s'enclenche pas nan plus.
Voici la partie du code en question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 private void Key_Click(object sender, EventArgs e) { if (System.IO.File.Exists(@".\BUS\BServeur.dll")) { this.pictureBox1.Image = Image.FromFile(@".\Load.gif"); this.pictureBox1.Visible = true; this.bgwDesign.RunWorkerAsync(); } else { MessageBox.Show("Le fichier " + System.IO.Directory.GetCurrentDirectory() + @"\BUS\BS.txt" + " n'a pas pu être ouvert.\nVérifier le chemin du fichier."); } }Comme je le disais mon évènement ne se déclenche pas, mon gif reste toujours à visible
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 private void bgwDesign_DoWork(object sender, DoWorkEventArgs e) { ExcelTest eT = new ExcelTest(); NameValueCollection cles = new NameValueCollection(); eT.CreateKey(); cles = eT.GetCles(); //Quand je mets le picturetool.visible = false; ici ça me mets conflit de thread }
j'ai pourtant bien suivie le tuto du site.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 private void bgwDesign_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Error != null) { MessageBox.Show("Une erreur est survenue durant le traitement."); } else { MessageBox.Show("Opération terminée"); } pictureBox1.Visible = false; }
Bonne soirée.
Partager