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

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

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

4 ответов

9 просмотров

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

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

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

вот про это

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
18
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно 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
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта