Вы могли слышать, что ключевые слова
async и await в C# приводят к созданию конечного автомата. Но что это значит? 📌 Создание конечного автомата:
Компилятор разбивает метод на части вдоль границ
await и создает конечный автомат, который управляет состоянием выполнения кода. Каждый раз, когда метод встречает await, выполнение приостанавливается, и создается состояние, которое будет продолжено после завершения асинхронной операции.📌 Управление состояниями с помощью TaskScheduler:
TaskScheduler управляет продолжением выполнения конечного автомата, запускает его, когда завершится ожидаемая задача. Конечный автомат синхронно выполняет код между await, а затем использует колбэки для продолжения выполнения.📌 Хранение состояния:
Конечный автомат хранится в объекте
Task или Task<T>, который также сохраняет текущие состояния и результаты выполнения задач, а также возможные исключения.👉 Подробнее в гайде от Steven Giesel
