VB.NET: Senden Mehrere Argumente Zu einem hintergrundworker
Ich bin versucht, einen BackgroundWorker ausführen von Aufgaben auf einem separaten thread.
Ich bin in der Lage, einen einzigen argument für die BackgroundWorker-Klasse wie folgt:
Senden argument der BackgroundWorker-Klasse:
Private Sub btnPerformTasks_Click(sender As System.Object, e As System.EventArgs) Handles btnPerformTasks.Click
Dim strMyArgument as String = "Test"
BW1.RunWorkerAsync(strMyArgument)
End Sub
Abrufen argument innerhalb der BackgroundWorker-Klasse:
Private Sub BW1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BW1.DoWork
Dim strMyValue As String
strMyValue = e.Argument 'Test
End Sub
Gibt es nur 2 überladene Methoden für RunWorkerAsync()
. Einer, der keine Argumente entgegennimmt und einen, der nimmt ein argument.
Möchte ich wissen:
- Wie kann ich mehrere Werte übergeben zu
BW1.RunWorkerAsync()
- Wie kann ich diese abrufen mehrerer Werte aus dem inneren
BW1_DoWork
- Ein argument ist genug, um ein Objekt übergeben, mit so vielen Eigenschaften, wie Sie benötigen. Schreiben Sie eine kleine helper-Klasse. Oder verwenden Sie einen lambda-Ausdruck.
- Ich glaube, die Antwort, dass pacane vorausgesetzt, ist der helper-Klasse-Methode. Konnte Sie zeigen, wie die Verwendung eines lambda-Ausdrucks zu erreichen?
- Die Frage ist ganz klar oben. Ich erreichen kann, was notwendig ist für die Frage der Verwendung der Methode der Klasse als beantwortet pacane. Ich wollte nur wissen, ob durch die Verwendung eines lambda-Ausdrucks, ich könnte das gleiche tun, effizienter.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie wickeln Sie Ihre Argumente in einem Objekt und übergeben Sie dieses Objekt an die Arbeiter.
Um es abzurufen, können Sie einfach cast
e
im DoWork zu Ihrem benutzerdefinierten Typ.hier ein Beispiel:
Dim args As WorkerArgs = e.Argument
ist nicht notwendig, in dem obigen Beispiel. Sieht aus wie bekomme ich den übergebenen Werte mite.Argument.Something
unde.Argument.SomethingElse
.