如何使用并行任务在单独的线程中运行带参数的方法

Tho*_*mas 5 c# task-parallel-library

这是代码示例

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
}
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*son 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
}
Run Code Online (Sandbox Code Playgroud)

如果要同时启动所有线程,可以使用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
}
Run Code Online (Sandbox Code Playgroud)

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