如何等待两个应该并行运行的异步函数的完成

本文关键字:并行 异步 运行 函数 两个 何等待 等待 | 更新日期: 2023-09-27 18:01:58

如果我得到以下代码片段:

async Task MyFunc()
{
    await DoWork1();
    await DoWork2();
}
async Task<object> DoWork1() { /*Do work here*/ }
async Task<object> DoWork2() { /*Do other work here*/ }
void main()
{
    MyTask();
    //Do some stuff which needs MyFunc() to be completed beforehand.
}

我想做的是让DoWork1()和DoWork2()并行运行,但只返回到main(),如果它们都完成。

它会这样工作吗?还是有更好的解决方案?

如何等待两个应该并行运行的异步函数的完成

您可以使用WhenAll来实现简单的并行:

async Task MyFunc()
{
  var task1 = DoWork1();
  var task2 = DoWork2();
  await Task.WhenAll(task1, task2);
}