给出以下示例:

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返回控件,将执行下一行

10-06 06:44