Parallel ExtensionsおよびVB.netで値を渡す
-
06-07-2019 - |
質問
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
所属していません StackOverflow