还在学习async-await。我碰到了类似以下的例子:
public async Task MethodAsync()
{
await Method01Async();
await Method02Async();
}
最后等待的目的是什么? Method02Async是MethodAsync方法的最后一行。所以没有任何方法余数 - 下面没有任何行 - 在编译器生成的回调中没有任何东西要调用...我错过了什么?
答案 0 :(得分:17)
实际上有一个“方法余量” - 它完成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
才会完成。< / p>