如何在C#中等待异步功能

时间:2018-10-01 04:41:08

标签: c#

我有3个必须同时运行的异步函数,

public async Task Fun1()
{
  // do something
}
public async Task Fun2()
{
  // do something
}
public async Task Fun2()
{
  // do something
}

在我的基本函数中,我将此函数称为 此功能必须一起运行 如何等待此功能完成所有操作?

public async Task BaseFun()
{
    Fun1()
    Fun2()
    Fun3()
   // do something after Fun1, Fun2 and Fun3 complete
}

4 个答案:

答案 0 :(得分:4)

public async Task BaseFun()
{
    await Task.WhenAll(Fun1(),
    Fun2(),
    Fun3());
   // do something after Fun1, Fun2 and Fun3 complete
}

答案 1 :(得分:1)

只需在函数之前添加一个等待。

public async Task BaseFun()
{
    await Fun1();
    await Fun2();
    await Fun3();
   // do something after Fun1, Fun2 and Fun3 complete
}

答案 2 :(得分:0)

也可以用作

public async Task BaseFun()
{
    await Fun1();
    await Fun2();
    await Fun3();
    // do something after Fun1, Fun2 and Fun3 complete
}

答案 3 :(得分:0)

您还可以使用Task.WaitAll。

var taskArray = new Task[3]
{
    Fun1(),
    Fun2(),
    Fun3()
};
Task.WaitAll(taskArray);

顺便说一句,当您通过公共基本方法调用它们时,为什么Fun1-3方法也同时公开?