質問

VB.netでParallel Extensionsを使用して以下を実行する方法の例を探しています。

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

立ち往生しているのは、タスクにパラメーターInputValueforWorkを渡す方法です

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

任意の提案があり、場合によってはコーディング例を歓迎します。

アンドリュー

役に立ちましたか?

解決

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

Dim A(0) as Int32
A(0) = 1
Tasks.Task.Create(AddressOf TransferData, A)

他のヒント

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

var T = Tasks.Task.Create( () => functionToDoWork(SomeParameter) )

ここでの本当の問題は、 VB 9はAction<T>をサポートしていないことです。 、ファンクのみ

次のように、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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top