等待最后一个方法行
还在学习async-await。 我碰到了类似以下的例子:
public async Task MethodAsync() { await Method01Async(); await Method02Async(); }
最后等待的目的是什么? Method02Async是MethodAsync方法的最后一行。 所以没有任何方法余数 – 下面没有任何行 – 在编译器生成的回调中没有任何东西要调用…我错过了什么吗?
实际上有一个“方法余数” – 它完成了MethodAsync
返回的Task
。
(返回值)等待Method02Async
,以便MethodAsync
在Method02Async
完成之前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
完成。