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.");
            }
 
 
 
        }
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           
 
 
        }
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
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;
        }
j'ai pourtant bien suivie le tuto du site.

Bonne soirée.