5

这是代码示例

private void MethodStarter()
{
Task myFirstTask = Task.Factory.StartNew(Method1);
Task mySecondTask = Task.Factory.StartNew(Method1);
}

private void Method1()
{
 // your code
}

private void Method2()
{
 // your code
}

我正在寻找并行任务的代码片段,通过它我可以执行回调并将参数也传递给函数。谁能帮忙。

4

2 回答 2

12

如果我正确理解您的问题,这可能是答案:

private void MethodStarter()
{
    Task myFirstTask = Task.Factory.StartNew(() => Method1(5));
    Task mySecondTask = Task.Factory.StartNew(() => Method2("Hello"));
}

private void Method1(int someNumber)
{
     // your code
}

private void Method2(string someString)
{
     // your code
}

如果要同时启动所有线程,可以使用 h1ghfive 给出的示例。

更新: 一个应该可以工作但我没有测试过的回调示例。

private void MethodStarter()
{
    Action<int> callback = (value) => Console.WriteLine(value);
    Task myFirstTask = Task.Factory.StartNew(() => Method1(5, callback));
    Task mySecondTask = Task.Factory.StartNew(() => Method2("Hello"));
}

private void Method1(int someNumber, Action<int> intCallback)
{
     // your code
     intCallback(100); // will call the call back function with the value of 100
}

private void Method2(string someString)
{
     // your code
}

如果您不想传入回调函数,也可以查看Continuation 。

于 2012-08-13T08:15:18.253 回答
3

你应该尝试这样的事情:

Parrallel.Invoke(
  () => Method1(yourString1),
  () => Method2(youString2));
于 2012-08-13T08:17:54.370 回答