Что именно создается на куче?
Очень плохой код. async void не стоит использовать никогда.
https://stackoverflow.com/questions/45447955/why-exactly-is-void-async-bad
В смысле никогда? А обработчики событий какого-нибудь клика по кнопке в UWP? Просто нужно завернуть в try catch и залогировать. Лучше с помощью метола расширения. Использовать его не то что можно, а нужно в таких случаях
Для этого не нужен async void.
Через команду, например Могу ошибаться, но вроде в uwp биндинг через команды работал
Я сейчас не у компа. Твоё сообщение меня заинтересовало. Сходу в голову не приходит, как сделать обработчик клика по кнопке не async void, но при этом вызывающим асинхронный метод с await перед этим методом.
Обработчик событий тогда тоже может быть async void, чтобы из него можно было вызвать await SomeMethod()
В общем если биндинг через команды работает, то обработчик может быть и async Task и любой другой
В UWP можно в XAML некоторые события забиндить через Click=“{x:Bind ButtonClick}” и даже параметры метода можно опустить, все будет работать
Нельзя юзать async void, вот прям вообще нельзя Если вдруг забудешь обернуть всё тело метода в трай/кэч и где-то произойдёт эксепшен - получишь Task was cancelled, который будет подниматься в точку вызова, и в большинстве случаев приведёт к вылету приложения
Я рекомендую делать вот так: void OnClick() { async Task DoSmth() { await One(); await Two(); } DoSmth().NoAwait(); } Где NoAwait() — экстешнен, объявленный в проекте, который запускает таск и пишет ошибки в лог. Видишь, ни одного async void!
Это интересный способ, но это просто маскировка. По сути, теперь вообще тот, кто будет вызвать метод никак не догадается о тех эффектах, которые он может породить. Кто-то там сказал, что async void это плохо и теперь нужно его не использовать. Но я так не считаю. Я только что почитал доку Майкрософта, где написано, что в обработчиках событий async void это нормально.
async void — это плохо, и его не нужно использовать.
обработчики событий это одна из причин почему async void существует
Покажите сам экстеншн плиз.
Ок. Я понял
Я бы добавил еще NotRunToCompletion
ну так я и сам могу)
Вот, например.
Так а большего и не нужно.
Обсуждают сегодня