给出以下示例:
void Main() { Test().Wait(); }
async Task Test()
{
Console.WriteLine("Test A");
await AsyncFunction();
// It doesn't matter where the await is in AsyncFunction, it will always wait for the function to complete before executing the next line.
Console.WriteLine("Test B");
}
async Task AsyncFunction()
{
Console.WriteLine("AsyncFunction A");
await Task.Yield();
Console.WriteLine("AsyncFunction B");
}
在任何情况下,“ AsyncFunction B”之前都不会显示“ Test B”
Test()中的await语句不仅要等待Task.Yield()完成恢复,还要等待整个AsyncFunction完成?
最佳答案
在任何情况下,“ AsyncFunction B”之前都不会显示“ Test B”?
不,那不会发生。
Test()中的await语句不仅要等待Task.Yield()完成恢复,还要等待整个AsyncFunction完成?
那就对了。由于您正在等待AsyncFunction
,因此一旦方法完成执行,控制就会恢复。如果您不等待它,则一旦从await Task.Yield
返回控件,将执行下一行