等待和异步行为
本文关键字:异步 等待 | 更新日期: 2023-09-27 18:13:23
给出这个例子:
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");
}
在任何情况下"Test B"都不会显示在"AsyncFunction B"之前
Test()中的await语句不只是等待Task.Yield()完成恢复,而是等待整个AsyncFunction完成?
在任何情况下"Test B"将显示在"AsyncFunction B"之前?
不,那不会发生的。
Test()中的await语句不只是等待Task.Yield()完成恢复,而是等待整个AsyncFunction完成?
这是正确的。由于您正在等待AsyncFunction
,因此一旦方法执行完成,控制将恢复。如果不等待,则一旦从await Task.Yield