仍在学习异步等待。我遇到了类似于以下的示例:
public async Task MethodAsync()
{
await Method01Async();
await Method02Async();
}
最后一次等待的目的是什么?Method02Async 是 MethodAsync 方法的最后一行。所以没有任何方法剩余 - 下面没有任何行 - 在编译器生成的回调中没有任何要调用的东西......我错过了什么吗?
仍在学习异步等待。我遇到了类似于以下的示例:
public async Task MethodAsync()
{
await Method01Async();
await Method02Async();
}
最后一次等待的目的是什么?Method02Async 是 MethodAsync 方法的最后一行。所以没有任何方法剩余 - 下面没有任何行 - 在编译器生成的回调中没有任何要调用的东西......我错过了什么吗?
实际上有一个“方法剩余” - 它完成了Task
返回的MethodAsync
.
(的返回值)Method02Async
被等待,MethodAsync
直到完成才Method02Async
完成。
如果你有:
public async Task MethodAsync()
{
await Method01Async();
Method02Async();
}
然后MethodAsync
将(异步)等待Method01Async
完成,然后开始Method02Async
。MethodAsync
然后将完成,而Method02Async
可能仍在进行中。
你拥有它的方式:
public async Task MethodAsync()
{
await Method01Async();
await Method02Async();
}
意味着MethodAsync
将(异步)等待Method01Async
完成,然后(异步)等待Method02Async
完成,然后才会MethodAsync
完成。