如何等待两个应该并行运行的异步函数的完成
本文关键字:并行 异步 运行 函数 两个 何等待 等待 | 更新日期: 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);
}