170 похожих чатов

Здравствуйте, вот пытаюсь понять, если я так создаю методы, то

каждый метод в ассинхронном коде создается на куче?

23 ответов

15 просмотров

Что именно создается на куче?

Очень плохой код. async void не стоит использовать никогда.

Сергей Игнатов
Почему?

https://stackoverflow.com/questions/45447955/why-exactly-is-void-async-bad

Dr. Friedrich von Never
Очень плохой код. async void не стоит использовать...

В смысле никогда? А обработчики событий какого-нибудь клика по кнопке в UWP? Просто нужно завернуть в try catch и залогировать. Лучше с помощью метола расширения. Использовать его не то что можно, а нужно в таких случаях

Aleksei
В смысле никогда? А обработчики событий какого-ниб...

Через команду, например Могу ошибаться, но вроде в uwp биндинг через команды работал

Dr. Friedrich von Never
Для этого не нужен async void.

Я сейчас не у компа. Твоё сообщение меня заинтересовало. Сходу в голову не приходит, как сделать обработчик клика по кнопке не async void, но при этом вызывающим асинхронный метод с await перед этим методом.

Mihail
Через команду, например Могу ошибаться, но вроде в...

Обработчик событий тогда тоже может быть async void, чтобы из него можно было вызвать await SomeMethod()

Aleksei
Обработчик событий тогда тоже может быть async voi...

В общем если биндинг через команды работает, то обработчик может быть и async Task и любой другой

Mihail
Через команду, например Могу ошибаться, но вроде в...

В UWP можно в XAML некоторые события забиндить через Click=“{x:Bind ButtonClick}” и даже параметры метода можно опустить, все будет работать

Mihail
В общем если биндинг через команды работает, то об...

Нельзя юзать async void, вот прям вообще нельзя Если вдруг забудешь обернуть всё тело метода в трай/кэч и где-то произойдёт эксепшен - получишь Task was cancelled, который будет подниматься в точку вызова, и в большинстве случаев приведёт к вылету приложения

Aleksei
Я сейчас не у компа. Твоё сообщение меня заинтерес...

Я рекомендую делать вот так: void OnClick() { async Task DoSmth() { await One(); await Two(); } DoSmth().NoAwait(); } Где NoAwait() — экстешнен, объявленный в проекте, который запускает таск и пишет ошибки в лог. Видишь, ни одного async void!

Dr. Friedrich von Never
Я рекомендую делать вот так: void OnClick() { a...

Это интересный способ, но это просто маскировка. По сути, теперь вообще тот, кто будет вызвать метод никак не догадается о тех эффектах, которые он может породить. Кто-то там сказал, что async void это плохо и теперь нужно его не использовать. Но я так не считаю. Я только что почитал доку Майкрософта, где написано, что в обработчиках событий async void это нормально.

Aleksei
Это интересный способ, но это просто маскировка. П...

async void — это плохо, и его не нужно использовать.

Aleksei
Это интересный способ, но это просто маскировка. П...

обработчики событий это одна из причин почему async void существует

Sinner
Покажите сам экстеншн плиз.

вот примерно что можно сделать

Сергей
screenshot вот примерно что можно сделать

Я бы добавил еще NotRunToCompletion

ну так я и сам могу)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта