Как стать автором
Обновить

Комментарии 9

Да, конечно. Так будет даже лучше.
А как это будет работать, если у вас внутри async-метода несколько await?
Эмм. Метод с несколькими await, насколько я помню, сам уже представляет собой цепочку continuation. На какой из них вешаются ваши?
Хотя наверное, я не прав, и внутри машинки не цепочка continuation, поэтому там не должно быть проблем. Вы проверяли поведение на сложном методе? (меня в основном исключения интересуют)
«Наши» продолжения вешаются на ту задачу, которую вернул нам метод.
Второй вопрос: я же правильно понимаю, что ваши continuations никем не ожидаются, их выполнение не гарантировано, и exceptions никем не наблюдаются?
Перехватываем task непосредственно перед возвратом из метода, если task faulted, то обрабатываем aggregate exception в соответствующем методе, если несколько await в методе — и они все бросают исключения — то вываливаемся на первом. Continuations лично для меня было проще сделать так, как есть, в атрибуте, а не встраивать непосредственно в IL, если встраивать — то получается много кода, на это не было времени. Если не перехватить в атрибуте — да, мы не будем наблюдать exception. Я вот не понимаю, если честно, в чем сложность подключить пакет и посмотреть, как он работает, если будут найдены ошибки, или предложен лучший вариант обработки, и я и остальные будут только благодарны. Вот это pastebin.com/0SMvYrrR работает на данный момент.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории