Комментарии 9
Будет минутка запилите пожалуйста pull request в github.com/alexeysuvorov/MethodDecorator я при возможности вмержу в оригинальный fody. Спасибо за фикс.
А как это будет работать, если у вас внутри async-метода несколько
await
?Точно такой же результат. Вход в метод, выход, continuations. А вы что имели в виду?
Эмм. Метод с несколькими await, насколько я помню, сам уже представляет собой цепочку continuation. На какой из них вешаются ваши?
Хотя наверное, я не прав, и внутри машинки не цепочка continuation, поэтому там не должно быть проблем. Вы проверяли поведение на сложном методе? (меня в основном исключения интересуют)
Второй вопрос: я же правильно понимаю, что ваши continuations никем не ожидаются, их выполнение не гарантировано, и exceptions никем не наблюдаются?
Перехватываем task непосредственно перед возвратом из метода, если task faulted, то обрабатываем aggregate exception в соответствующем методе, если несколько await в методе — и они все бросают исключения — то вываливаемся на первом. Continuations лично для меня было проще сделать так, как есть, в атрибуте, а не встраивать непосредственно в IL, если встраивать — то получается много кода, на это не было времени. Если не перехватить в атрибуте — да, мы не будем наблюдать exception. Я вот не понимаю, если честно, в чем сложность подключить пакет и посмотреть, как он работает, если будут найдены ошибки, или предложен лучший вариант обработки, и я и остальные будут только благодарны. Вот это pastebin.com/0SMvYrrR работает на данный момент.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Улучшаем Fody MethodDecoratorEx для асинхронных методов