Bonsoir tout le monde,
ça fait 3 jours que je galère et j'ai pas trouvé la solution, bien, mon problème est le suivant :
j'ai développé une classe qui extrait des données, et pour connaitre la progression de l'extraction j'ai créé un event dans cette classe et je le raise dans la boucle d'extraction des données, voici un petit morceau de code pour éclaircir ce que je viens de dire :
quand j'instancie ma classe dans une form, tout marche à merveille, sauf que, vu que le traitement de l'extraction est un lourd, donc il y a le freeze de la form, j'ai pensé au BackgroundWorker, ça marche , mais sans que je peux faire le handle de l'évenement "Progress".
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 Public Class MaClass Public Delegate Sub ProgressEventHandler(ByVal Percentage As Integer) Public Event Progress As ProgressEventHandler Public Sub Extracting() 'maCollection est une collection qui contient des données, j'ai pas copié tout 'le code parce que c'est trop long. for i as integer=0 to maCollection.Count-1 'un traitement pour l'extraction RaiseEvent Progress(Math.Round((i / maCollection.Count) * 100)) Next End Sub End Class
et voici le code que j'ai utilisé dans la form :
j'ai vraiment besoin d'aide pour ça, Visual Basic .Net ou C# il n'y a pas de différence, mais il faut que je trouve une solution pour ça et merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Public Class Form1 Private WithEvents x As maClasse Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click X.Extracting() End Sub Private Sub X_Progress(ByVal Percentage As Integer) Handles X.Progress ProgressBar1.Value = Percentage End Sub End Class
Partager