等待的最后一个方法行方法

2023-09-03 12:08:17 作者:我一睁眼,就可以杀你!

仍在学习异步计谋。我碰到的例子类似以下内容:

Still learning about async-await. I bumped into examples similar to following:

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

什么最后的await的目的是什么? Method02Async是MethodAsync方法的最后一行。所以没有任何方法剩下的 - 没有任何低于行 - 没有什么被称为由编译器生成的回调......我缺少什么

What is the purpose of the last await? Method02Async is the last line of MethodAsync method. So there is no any method remainder - no any lines below - no anything to be called in the callback generated by the compiler... Am I missing anything?

推荐答案

有实际上就是法余数 - 它完成了工作按 MethodAsync 。

There actually is a "method remainder" - it completes the Task returned by MethodAsync.

(返回值) Method02Async 的等待让 MethodAsync 才能完成 Method02Async 完成。

(The return value of) Method02Async is awaited so that MethodAsync is not completed until Method02Async completes.

如果你有:

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

然后 MethodAsync 将(异步)等 Method01Async 来完成,然后启动 Method02Async MethodAsync 之后会完成,而 Method02Async 可能仍在进行中。

Then the MethodAsync will (asynchronously) wait for Method01Async to complete and then start Method02Async. MethodAsync will then complete while Method02Async may still be in progress.

您的方式:

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

意思是 MethodAsync 将(异步)等 Method01Async 来完成,然后(异步)等 Method02Async 来完成,只有这样, MethodAsync 完成。

Means that MethodAsync will (asynchronously) wait for Method01Async to complete and then (asynchronously) wait for Method02Async to complete, and only then will MethodAsync complete.