Ожидание последней линии метода

По-прежнему узнавать об асинхронном ожидании. Я столкнулся с примерами, похожими на следующие:

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

Какова цель последнего ожидания? Method02Async - последняя строка метода MethodAsync. Таким образом, нет никакого остатка метода - никаких строк ниже - ничего не нужно вызывать в обратном вызове, сгенерированном компилятором... Я что-то пропустил?

Ответ 1

На самом деле есть "остаток метода" - он завершает 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 завершено.