Übergeben von Werten mit Parallel Extensions und VB.net
-
06-07-2019 - |
Frage
Ich bin für ein Beispiel dafür, wie die folgend in VB.net mit Parallel Extensions zu tun.
Dim T As Thread = New Thread(AddressOf functiontodowork)
T1.Start(InputValueforWork)
Wo ich bin stecken zu werden, ist, wie in der Aufgabe, meine Parameter InputValueforWork
passierenDim T As Tasks.Task = Tasks.Task.Create(AddressOf functiontodowork)
Jeder schlägt und möglicherweise eine Codierung Beispiel wäre willkommen.
Andrew
Lösung
ich meine eigene Frage gelöst. Sie müssen mit den Werten in einem Array übergeben.
Dim A(0) as Int32
A(0) = 1
Tasks.Task.Create(AddressOf TransferData, A)
Andere Tipps
Nicht unbedingt die nützlichste Antwort, die ich kenne, aber in C # Sie mit einem Verschluss tun könnten:
var T = Tasks.Task.Create( () => functionToDoWork(SomeParameter) )
Das eigentliche Problem hier ist, dass VB 9 nicht unterstützt Action<T>
, nur funcs
Sie können mit einem Helfer in C #, wie dies um diese Einschränkung umgehen:
public class VBHelpers {
public static Action<T> FuncToAction<T>(Func<T, object> f) {
return p => f(p);
}
}
Dann Sie es von VB wie folgt verwenden:
Public Sub DoSomething()
Dim T As Task = Task.Create(VBHelpers.FuncToAction(Function(p) FunctionToDoWork(p)))
End Sub
Public Function FunctionToDoWork(ByVal e As Object) As Integer
' this does the real work
End Function
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow