等待最后一个方法行

时间:2012-04-20 13:31:02

标签: c# .net async-await c#-5.0

还在学习async-await。我碰到了类似以下的例子:

public async Task MethodAsync()
{
  await Method01Async();
  await Method02Async();
}

最后等待的目的是什么? Method02Async是MethodAsync方法的最后一行。所以没有任何方法余数 - 下面没有任何行 - 在编译器生成的回调中没有任何东西要调用...我错过了什么?

1 个答案:

答案 0 :(得分:17)

实际上有一个“方法余量” - 它完成Task返回的MethodAsync

等待Method02Async的{​​返回值},以便在MethodAsync完成之前Method02Async未完成。

如果你有:

public async Task MethodAsync()
{
  await Method01Async();
  Method02Async();
}

然后MethodAsync将(异步)等待Method01Async完成,然后启动Method02AsyncMethodAsync将在Method02Async可能仍在进行中时完成。

你拥有它的方式:

public async Task MethodAsync()
{
  await Method01Async();
  await Method02Async();
}

表示MethodAsync将(异步)等待Method01Async完成,然后(异步)等待Method02Async完成,然后MethodAsync才会完成。< / p>

相关问题