仍在学习异步等待。我遇到了类似于以下的示例:
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完成。