运行多个异步任务并等待它们全部完成怎么实现?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我需要在控制台应用程序中运行多个异步任务,并在进一步处理之前等待它们全部完成。

对于这样的场景,最简单的实现是什么?

提问于
用户回答回答于

Task.WhenAll

var task1 = DoWorkAsync();
var task2 = DoMoreWorkAsync();

await Task.WhenAll(task1, task2);

主要区别Task.WaitAllTask.WhenAll前者将阻塞(类似于使用Wait(在单个任务上)虽然后者不会也可以等待,但将控制权返回给调用方,直到所有任务完成为止。

用户回答回答于

创建多个任务:

List<Task> TaskList = new List<Task>();
foreach(...)
{
   var LastTask = new Task(SomeFunction);
   LastTask.Start();
   TaskList.Add(LastTask);
}

Task.WaitAll(TaskList.ToArray());

扫码关注云+社区