Await on the last method line

.net, async-await, c#, c#-5.0

Solution

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

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

If you had:

public async Task MethodAsync()
{
  await Method01Async();
  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.

The way you have it:

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

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

Problem

Still learning about async-await. I bumped into examples similar to following: ``` public async Task MethodAsync() { await Method01Async(); await Method02Async(); } ``` 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?

Original source