Hallo,
ich habe mich gerade mal ein wenig mit dem Backgroundworker befasst und soweit auch alles verstanden. Jetzt möchte ich aber mehrere Backgroundworker dynamisch erstellen lassen. Sprich das Programm weiss vor der Inbetriebnahme nicht wieviele Worker es mal benutzen wird. Genau da liegt mein Problem!
Ich habe das Internet durchsucht und auch einen halben Lösungsansatz gefunden. Man solle die Backgroundworker einfach als Array deklarieren, somit könne man ja soviele erstellen lassen, wie man möchte. Soweit sogut. Da ist aber dann das Handler-Problem!
Wie weise ich den BGWs die passenden Adhandler zu? Ich habs bereits versucht, aber irgendwie willes nicht klappen.
AddHandler bgw(0).DoWork, AddressOf Test
AddHandler bgw(0).ProgressChanged, AddressOf ProgressChanged
Das nimmt der Compiler irgendwie nicht an..
Ich glaub ich bin total auf dem Holzweg. Vielleicht ist dies auch ein wenig zu "Hoch" für mein derzeitiges Grundwissen.. aber versuchen kann man es ja mal
ich habe mich gerade mal ein wenig mit dem Backgroundworker befasst und soweit auch alles verstanden. Jetzt möchte ich aber mehrere Backgroundworker dynamisch erstellen lassen. Sprich das Programm weiss vor der Inbetriebnahme nicht wieviele Worker es mal benutzen wird. Genau da liegt mein Problem!
Ich habe das Internet durchsucht und auch einen halben Lösungsansatz gefunden. Man solle die Backgroundworker einfach als Array deklarieren, somit könne man ja soviele erstellen lassen, wie man möchte. Soweit sogut. Da ist aber dann das Handler-Problem!
Wie weise ich den BGWs die passenden Adhandler zu? Ich habs bereits versucht, aber irgendwie willes nicht klappen.
AddHandler bgw(0).DoWork, AddressOf Test
AddHandler bgw(0).ProgressChanged, AddressOf ProgressChanged
Das nimmt der Compiler irgendwie nicht an..
Ich glaub ich bin total auf dem Holzweg. Vielleicht ist dies auch ein wenig zu "Hoch" für mein derzeitiges Grundwissen.. aber versuchen kann man es ja mal
VB.NET-Quellcode
- Public Class Form1
- Public bgw() As System.ComponentModel.BackgroundWorker
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- ReDim bgw(0)
- AddHandler bgw(0).DoWork, AddressOf Test
- AddHandler bgw(0).ProgressChanged, AddressOf ProgressChanged
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- bgw(0).RunWorkerAsync()
- End Sub
- Private Sub ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs)
- ProgressBar1.Value = e.ProgressPercentage
- End Sub
- Private Sub Test(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
- Dim a, b, a1, b1 As Integer
- Dim strtemp As String = ""
- Dim progress As Double
- a = 100
- b = 200
- For a1 = 0 To a - 1 Step 1
- For b1 = 0 To b Step 1
- strtemp &= a
- Next
- progress = (a1 + 1) * 100 / (a)
- bgw(0).ReportProgress(progress)
- Next
- End Sub
- End Class
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Ponch0“ ()