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

passieren
Dim T As Tasks.Task = Tasks.Task.Create(AddressOf functiontodowork)

Jeder schlägt und möglicherweise eine Codierung Beispiel wäre willkommen.

Andrew

War es hilfreich?

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
scroll top