Я реализовал собственный конструктор асинхронных методов, но у меня есть несколько вопросов, на которые я не могу найти правильный ответ.
1) Я видел, что в зависимости от того, как я строю (Debug / Release), конечный автомат получаетскомпилирован в структуру или класс.Можно ли поручить компилятору всегда генерировать класс, несмотря ни на что?
2) Я видел, что void SetStateMachine (IAsyncStateMachine m) вообще не вызывается, даже если в документации сказано, что есликонечный автомат - это структура, он должен вызываться с коробочной версией.
3) Я сделал мой конструктор методов классом.Должен ли я сделать это структурой?Каков наилучший метод для этого?
4) Странно, но GetAwaiter иногда называют ПОСЛЕ строителя. Вызывается метод SetResult.Это нормальное поведение?если мы проверим декомпилированную версию Задачи, мы ясно увидим, что она сначала запрашивает ожидающего, а если ожидающий не завершен, она вызывает состояние машины AwaitOnCompleted / AwaitUnsafeOnCompleted.
Среда: .Net Core 2.1
Большое спасибо!