1

ParallelExtensionsを使用してVB.netで次のことを行う方法の例を探しています。

Dim T As Thread = New Thread(AddressOf functiontodowork)
T1.Start(InputValueforWork)

私が行き詰まっているのは、私のパラメーターInputValueforWorkをタスクに渡す方法です。

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

任意の提案とおそらくコーディング例を歓迎します。

アンドリュー

4

3 に答える 3

1

私は自分の質問を解決しました。値を含む配列を渡す必要があります。

Dim A(0) as Int32
A(0) = 1
Tasks.Task.Create(AddressOf TransferData, A)
于 2008-12-09T16:48:56.767 に答える
0

ここでの本当の問題は、VB 9がサポートしておらずAction<T>、Funcsのみをサポートしていることです。

この制限を回避するには、次のようにC#でヘルパーを使用します。

public class VBHelpers {
    public static Action<T> FuncToAction<T>(Func<T, object> f) {
        return p => f(p);
    }
}

次に、VBから次のように使用します。

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
于 2008-12-08T14:36:26.097 に答える
0

必ずしも私が知っている最も役立つ答えではありませんが、C#ではクロージャーを使用してこれを行うことができます:

var T = Tasks.Task.Create( () => functionToDoWork(SomeParameter) )
于 2008-11-07T04:47:17.800 に答える