给出这个例子:
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");
}
在任何情况下"测试B"将在" AsyncFunction B"
之前显示Test()中的await语句不是等待Task.Yield()完成恢复,而是等待整个AsyncFunction完成?
答案 0 :(得分:7)
在“异步功能B”之前,“测试B”是否会显示?
不,那不会发生。
Test()中的await语句不是等待Task.Yield()完成恢复,而是等待整个AsyncFunction完成?
没错。由于您正在等待AsyncFunction
,因此一旦方法完成执行,控制将恢复。如果您没有等待它,那么从await Task.Yield