Bonjour,
J'utilise un BackgroundWorker pour effectuer une tâche longue (une boucle for avec environ 60000 boucles représentant le nombre de ligne d'un document).
Voici mon code:
Mon problème se situe au niveau de l'évènement DoWork. Le contenu ne s'exécute pas (la boucle for n'est pas effectuée). L'évènement RunWorkerCompleted est délenché tout de suite après l'évènement DoWork. J'ai regardé cette page http://glarde.developpez.com/dotnet/bgworker/vb/ mais je n'ai pas trouvé de réponse.
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34 'évènement qui permet de déclencher le thread d'arrière plan Private Sub lblMaJ_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblMaJ.Click gpbMAJEnCours.Location = New Point(605, 106) gpbMAJEnCours.Size = New Size(307, 281) gpbMAJEnCours.Visible = True BackgroundWorkerMaJ.RunWorkerAsync() End Sub Private Sub BackgroundWorkerMaJ_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorkerMaJ.DoWork 'Ici se trouve mes déclarations de variables utilisées pour ce 'traitement et ma boucle for End Sub 'évènement déclenché une fois DoWork terminé Private Sub BackgroundWorkerMaJ_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorkerMaJ.RunWorkerCompleted 'compte le nbre d'éléments dans la listBox. Si vide message, sinon ouverture de la fenêtre frmModif If lstModif.Items.Count = 0 Then MessageBox.Show("Aucune donnée n'a été ajouté", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) Else lblText.Text = "Liste des données qui ont été ajoutés dans la base de données:" gpbMAJEnCours.Size = New Size(641, 281) End If End Sub
N'hésiter pas à poster si vous n'avez pas compris mon problème.
Merci d'avance pour votre aide.
Partager