powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Зачем нужен await?
25 сообщений из 252, страница 10 из 11
Зачем нужен await?
    #39685504
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКонтролируется на этапе сборки.тоже помню где то ругалась.
Счас проверил - f2, переименовать - не ругается)
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685505
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRConfigureAwait(false) лишь отменяет требование выполнять продолжение в первоначальном контексте, т.е., дает "добро" на любой контекст, в т.ч. не исключая первоначальный. В данном примере, вероятно, async-инфраструктуре "влом" идти и брать свободный поток из пула, и выбирается то, что "под боком" - а это (уже блокированный ожиданием .Result) UI-поток.
Или все происходит как-то по другому? Может кто-нибудь проверить этот пример у себя?

https://stackoverflow.com/questions/18524609/configureawaitfalse-still-deadlocks

Меняем на HttpClient и проблема исчезает.
Вообще, от WebCliet надо уже дааааааавным давно уже было отказаться везде где только можно.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685506
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНет, не забили. Все асинхронные методы имеют суффикс Async.И даже методы контроллера?
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685508
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProhVosttНет, не забили. Все асинхронные методы имеют суффикс Async.И даже методы контроллера?

Нет, это исключение из правила :)
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685543
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt https://stackoverflow.com/questions/18524609/configureawaitfalse-still-deadlocks

Меняем на HttpClient и проблема исчезает.
Вообще, от WebCliet надо уже дааааааавным давно уже было отказаться везде где только можно.
Ага, понятно, спасибо! Получается, что панацеи от дедлока при синхронном вызове "какого либо" асинхронного метода не существует... Переделывать синхронные методы в асинхронные, чтобы безопасно вызывать "любые" асинхронные, тоже не всегда возможно (out-параметры и т.п.). В общем, асинхронность "кусается"))
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685554
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRАга, понятно, спасибо! Получается, что панацеи от дедлока при синхронном вызове "какого либо" асинхронного метода не существует... Переделывать синхронные методы в асинхронные, чтобы безопасно вызывать "любые" асинхронные, тоже не всегда возможно (out-параметры и т.п.). В общем, асинхронность "кусается"))

Почему? Можно, но делать надо это правильно :)

Вот небольшой пример с описанием

http://andrey.moveax.ru/post/csharp-sync-to-async
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685580
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПочему? Можно, но делать надо это правильно :)

Вот небольшой пример с описанием

http://andrey.moveax.ru/post/csharp-sync-to-async
Пример хороший, но несколько о другом.
Речь о том, как безопасно вызывать "какой либо" асинхронный метод. Из async-метода это сделать легко - используя await. Из синхронного - сложнее, зависит от... Но, например, как в примере с дедлоком, этот синхронный метод (обработчик нажатия кнопки) легко превратить в асинхронный (дописать async) - и в нем задействовать await. Но такое легкое "превращение" не всегда возможно, в частности, если у метода есть out-параметры.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685637
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRПример хороший, но несколько о другом.
Речь о том, как безопасно вызывать "какой либо" асинхронный метод. Из async-метода это сделать легко - используя await. Из синхронного - сложнее, зависит от... Но, например, как в примере с дедлоком, этот синхронный метод (обработчик нажатия кнопки) легко превратить в асинхронный (дописать async) - и в нем задействовать await. Но такое легкое "превращение" не всегда возможно, в частности, если у метода есть out-параметры.

К сожалению, никак :(
Поэтому,

1. избегать возможности дедлока, не делать Wait и не обращаться к Result у Task
2. если нужно асинхронную задачу запустить синхронно, например, так https://msdn.microsoft.com/en-us/library/dd321435(v=vs.110).aspx
3. ну и ConfigureAwait в библиотеках, традиционно
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685638
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRесли у метода есть out-параметры

Запаковывать в OperationResult, как уже обсуждалось тут ранее ))
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685649
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttLRесли у метода есть out-параметры

Запаковывать в OperationResult, как уже обсуждалось тут ранее ))
Не надо делать синхронный код асинхронным автоматически или волшебством дописав async.
Если у вас out или у меня стек вызовов до 5го колена, то ничего не выйдет.
Логику и методы надо будет переписать.
Не заворачивая out в result, а полностью избавится от них.
Как в java).
Асинхронный код и сам программист не равен синхронному)).
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685662
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Не надо делать синхронный код асинхронным автоматически или волшебством дописав async.

Обычно это нужно, когда асинхронные интерфейсы и синхронный код, который надо подсунуть через адаптер.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685674
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttОбычно это нужно, когда асинхронные интерфейсы и синхронный код, который надо подсунуть через адаптер.сложно понять постановку в одно предложение.
Но вероятно что все методы уже готовы для асинхрооности)).
Out,ref нету. Общения с ГУИ нету. Они без вложенности и слабозависимы от результатов..
Тогда можно и async first). Это твой термин?
У меня в десктопе, кстати, не так много мест где нужна асинхронность.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685884
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Всё, что потенциально работает с данными, асинхронное. Также, запросы API, работа с файлами, тоже асинхронное. В десткопе это тоже имеет смысл, но десктоп не сильно страдает от использования потоков для получения асинхронного поведения. Хотя зависит от объёма функционала и нагрузки.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685894
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Вот смотри.
Есть же другие способы в IT добится цели.
В веб это контейнер или конвейер запросов. На каждый запрос конейнер выделяет новый поток.
В десктопе есть ОРМ, кэш, СУБД которые делают время отклика 0,1 сек.
Поэтому асинхронность методом await нужна там где нужна и в строке где поставил программист.
Согласись, что бездумно пихать асинхронность например на чтение конфига нафиг нужно.
Профи используют к месту и с умом). На то они и профи.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685896
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Поэтому я не поддерживаю сабж чтобы убрать оператор) и асинхронность first.
Imho.
Удачи!
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685898
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Согласись, что бездумно пихать асинхронность например на чтение конфига нафиг нужно.

Если программа не может стартануть без конфига, то синхронное чтение абсолютно уместно. В ином случае, асинхронный доступ лучше, так как IO операции не детерменированы по времени.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685993
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли программа не может стартануть без конфига, то синхронное чтение абсолютно уместноне понял как первое со вторым связано.
Первое решается тремя способами:
- конфиг это project - properties - settings
- руками.....после InitializeComponent() создать если надо default конфиг
- в коде учитывай что его нет.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39685998
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttасинхронный доступ лучше, так как IO операции не детерменированы по времени.
Ты по проще для народа выражайся).
Я выше писал, то профи держит под контролем IO операции.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39689053
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttДумаю многие сталкивались с ключевым словом await в языках, применяющих async/await паттерн для асинхронного программирования. Основное ограничение, это использование только в async-функциях, это понятно.

Вопрос такой. Почему бы вообще не отказаться от этого ключевого слова и необходимости его употребления, ведь компилятор может определить наличие вызова асинхронного метода и сам выполнить его асинхронно?

Понятно, что наличие ключевого слова await позволяет, допустим, собрать все вызовы в коллекцию и эвейтить её, или даже вообще не эвейтить, а выполнить без ожидания, или вернуть awaitable результат (Task, promise, etc.), но для подобного, более редкого, употребления можно было сделать специальный синтаксис.

await это синтаксический сахар, тригерящий компилятор на создание стейт-машины.
Вы предлагаете его убрать, чтобы компилятор автоматически распознавал, что метод возвращает Task, и в этом случае создавал стейт-машину ? Но как тогда быть, если мы хотим использовать не await а простой wait - например в консольном приложении ?
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39689059
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttЕвгенийВА что в GO такого легкого и простого?
Ужасные горутины и каналы?
Просто мерзкая обработка ошибок?
И никакого ГУЯ!

почему ужасные? сравнивать напрямую нельзя конечно, так как другая парадигма.

кстати, в .NET тоже будут каналы, скоро.
пока в глубокой бете.

точнее даже не в бете а в альфе вообще 0.1.0-alpha-001 :)
https://www.nuget.org/packages/System.Threading.Tasks.Channels
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39689081
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCore,
В консольном не надо асинхронность (шутка)
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39689096
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Чисто консольные приложения мне не приходится писать. Но вот WinService который может запускаться в консольном режиме - для разработки и отладки - да. Вот там и получается асинхронность. Но все сводится к простому ServiceImpl.Run().Wait().

Но я просто для примера привел консольное приложение. Что предложение отказаться от старого TPL и сделать все методы с Task'ами вызываемыми с await по умолчанию, не очень наверное правильная. Думаю есть какие-то ситуации, когда осмысленно не задействовать async/await.

тут вроде что-то похожее обсуждалось
https://stackoverflow.com/a/24298425
со ссылками на эти статьи
https://blogs.msdn.microsoft.com/pfxteam/2012/04/13/should-i-expose-synchronous-wrappers-for-asynchronous-methods/
https://blogs.msdn.microsoft.com/pfxteam/2012/03/24/should-i-expose-asynchronous-wrappers-for-synchronous-methods/

или я сейчас ошибаюсь.
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39689100
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreДумаю есть какие-то ситуации, когда осмысленно не задействовать async/await.я тоже против "автомата" в данном случае.
Если бы все поддержали то и 10 страниц бы не было.
Мне лично хотя бы для читабельности кода нужен оператор.
Imho
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39689107
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто у автора темы много работы связанной с асинхронным выполнением :) у многих таких проблем нет.
Это как с пропами, когда много работаешь с UI и моделями, немного раздражает эта писанина, даже с учётом сниппетов. всегда есть вещи, которые хотелось бы сделать проще. Сахара мало не бывает. Но нужно относиться к этому проще, лет 10 назад, всё это было куда большим гемороем
...
Рейтинг: 0 / 0
Зачем нужен await?
    #39689113
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreawait это синтаксический сахар, тригерящий компилятор на создание стейт-машины.
Вы предлагаете его убрать, чтобы компилятор автоматически распознавал, что метод возвращает Task, и в этом случае создавал стейт-машину ? Но как тогда быть, если мы хотим использовать не await а простой wait - например в консольном приложении ?

Легко. Метод помечен ключевым словом async. Этого достаточно в абсолютном большинстве случаев. И зачем в асинхронном заведомо методе "простой wait"?
...
Рейтинг: 0 / 0
25 сообщений из 252, страница 10 из 11
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Зачем нужен await?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]