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

Вот есть async, в нём есть await. Всё это начинает работать,

а потом встречается с незавершённой задачей. И возвращает её, разблокируя thread. Если у нас UI, то он не виснет, может реагировать на ещё что-нибудь, а тот метод когда-нибудь завершится. Кто бы ещё сказал, как, если он уже returned.
Это ладно, хоть как-то понятно.
А если нет UI, то какой вообще смысл в Context и прочем, если продолжиться оно может только получив результат с Awaitable и использовав его в дальнейшем.
Что тут вообще асинхронно и так ли уж плохо
Task.Run(async () => await AsyncMethod()).Result;
?

4 ответов

10 просмотров

async/await это просто синтаксический сахар над таксом, когда, как ты пишешь, тред разблокируется, захватывается текущий SynchonizationContext и после выполнения задачи, остаток метода передастся в SynchronizatonContext.Send/Post

смысл в потоке выполнения, твой таск может находиться в выполняемом состоянии неограниченное время без блокировки потока и требовать дополнительного потока на ожидание

например, ты отправляешь сообщение о начале процесса и потом кто то присылает оповещение о его завершении. в синхронной реализации ты должен отправить запрос и блокировать поток до тех пор, пока не придёт ответ. С Asyn await в этом нет необходимости, ты отправляешь запрос и создаёшь TaskCompletitionSource, и потом, когда придёт ответ ты сможешь продолжить выполнение своего кода в каком нибудь потоке из ThreadPool. То есть в момент ожидания ты не блокируешь никаких потоков

вот про это

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта