bonjour a tous,

j'essai de mettre en place un tableau de backgroundworker mais j'ai un peu de mal étant donné ma petite connaissance a ce sujet.

J'ai le code suivant, qui crée des labels, progressbar et backgroundworker:

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Imports System.ComponentModel
Imports System.Threading
 
Public Class Form1
 
    Dim pbTab() As ProgressBar
    Dim lbTab() As Label
    Dim bwTab() As BackgroundWorker
 
    Dim NbThread As Integer = 5
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim b1 As New Panel
 
        b1.Size = New Drawing.Size(470, 370)
        b1.AutoScroll = True
 
        Me.AutoScroll = True
 
        Me.Controls.Add(b1)
 
        Dim x As Integer = 140
        Dim y As Integer = 20
 
        ReDim pbTab(NbThread)
        ReDim lbTab(NbThread)
        ReDim bwTab(NbThread)
 
        Dim Names As ArrayList = New ArrayList({"Toto", "Titi", "Tata", "Tutu", "Toutou", "Teuteu"})
 
        For i = 0 To NbThread
 
            pbTab(i) = New ProgressBar
            lbTab(i) = New Label
            bwTab(i) = New BackgroundWorker
 
            bwTab(i).WorkerReportsProgress = True
            AddHandler bwTab(i).DoWork, AddressOf bwTab_DoWork
            AddHandler bwTab(i).ProgressChanged, AddressOf bwTab_ProgressChanged
            AddHandler bwTab(i).RunWorkerCompleted, AddressOf bwTab_RunWorkerCompleted
 
 
            pbTab(i).Style = ProgressBarStyle.Blocks
            pbTab(i).Maximum = 100
 
            pbTab(i).Size = New Drawing.Size(300, 20)
            lbTab(i).Size = New Drawing.Size(150, 20)
 
            pbTab(i).Location = New System.Drawing.Point(x, y)
            lbTab(i).Location = New System.Drawing.Point(x - 120, y)
 
            lbTab(i).Text = Names(i)
 
            y = y + 30
 
            b1.Controls.Add(pbTab(i))
            b1.Controls.Add(lbTab(i))
 
            bwTab(i).RunWorkerAsync(i)
 
        Next i
 
    End Sub
 
    Private Sub bwTab_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
        Trace.WriteLine("Thread : " & e.Argument & " started...")
        bwTab(e.Argument).ReportProgress(e.Argument)
    End Sub
 
    Private Sub bwTab_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs)
 
    End Sub
 
    Private Sub bwTab_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs)
        Trace.WriteLine("Thread finished")
    End Sub
 
End Class
j'ai un petit problème concernant l'affichage de la progression avec les progressbar. et la, je sèche.

Quelqu'un pourrait me donner une piste si mon projet et faisaible bien sur.


Merci a tous !