Обычный C# async-метод начинает выполнять тело при вызове и работает синхронно до первого await незавершённой операции. await ожидает результат, а не обязательно запускает саму операцию.
Когда именно начинается асинхронная операция при выполнении метода?
Обычный C# async-метод начинает выполнять тело при вызове и работает синхронно до первого await незавершённой операции. await ожидает результат, а не обязательно запускает саму операцию.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Обычный C# async-метод начинает выполнять тело при вызове и работает синхронно до первого await незавершённой операции. await ожидает результат, а не обязательно запускает саму операцию.
Например, вызов HTTP async-метода инициирует запрос согласно его реализации; сохранённый Task можно ожидать позже. Task.Run ставит делегат в пул при вызове, тогда как new Task(...) без Start не запускает его.
Поэтому момент старта определяется API, а не одним наличием слова Task. Async-итератор — отдельный случай: его выполнение связано с перечислением. Если очередной awaitable уже завершён, код проходит этот await без приостановки.