Комментарии 3
Ошибка у вас в реализации Delay: если Timer будет собран сборщиком мусора — он никогда не сработает. Нужна ссылка из возвращаемого MyTask к таймеру.
Это код из оригинальной статьи, сам Стивен говорит о том, что это просто примеры для понимания работы и реальный код конечно сложнее. Можете сами посмотреть реализацию в исходниках. Там как раз ссылка на таймер сохраняется в DelayPromise.
Он будет собран только после сборки MyTask, на которую указывает переменная t. Даже у MS пример аналогичный https://learn.microsoft.com/ru-ru/dotnet/api/system.threading.timer.-ctor?view=net-7.0
https://shorturl.at/ipyE5 попробуйте, поэкспериментируйте, ссылочка на sharplab. все срабатывает.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как на самом деле работает Async/Await в C# (Часть 3)