1

我正在寻找如何在 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)

欢迎任何建议和可能的编码示例。

安德鲁

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

不一定是我知道的最有用的答案,但在 C# 中,您可以通过闭包来做到这一点:

var T = Tasks.Task.Create( () => functionToDoWork(SomeParameter) )
于 2008-11-07T04:47:17.800 回答
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 回答