使用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>
,只有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
不隶属于 StackOverflow