foreach循环与任务

use*_*117 0 .net c# foreach loops task

我需要使用3个任务创建一个foreach循环,这需要等到所有3个任务完成后再移动到下一个任务.就像是

foreach (class r in sets)
{
    Task.Factory.StartNew(() => {
      DoThisFunction1();
    }, TaskCreationOptions.LongRunning);
    Task.Factory.StartNew(() => {
     DoThisFunction2();
    }, TaskCreationOptions.LongRunning);
    Task.Factory.StartNew(() => {
     DoThisFunction3();
    }, TaskCreationOptions.LongRunning);
 }
Run Code Online (Sandbox Code Playgroud)

有人可以给出一个简单的方法如何做到这一点?

NtF*_*reX 5

您可以使用WaitAll哪个没有返回类型,并将阻止Wait任务的类似或WhenAll将返回等待的任务Task.

例:

var tasks = new Task[] {
    Task.Factory.StartNew(() => {
        DoThisFunction1();
    }, TaskCreationOptions.LongRunning),
    Task.Factory.StartNew(() => {
        DoThisFunction2();
    }, TaskCreationOptions.LongRunning),
    Task.Factory.StartNew(() => {
        DoThisFunction3();
    }, TaskCreationOptions.LongRunning)
};

Task.WaitAll(tasks);
// or
await Task.WhenAll(tasks);
Run Code Online (Sandbox Code Playgroud)

可在此处找到更详细的答案