繁体   English   中英

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

[英]How to wait for async functions in 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
}
public async Task BaseFun()
{
    await Task.WhenAll(Fun1(),
    Fun2(),
    Fun3());
   // do something after Fun1, Fun2 and Fun3 complete
}

只需在函数之前添加await。

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

也可以做

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

您也可以使用Task.WaitAll。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM