|
|
||||||
Асинхронные события уже доступны?19.07.2021, 10:24. Показов 8467. Ответов 10
Метки нет (Все метки)
Внезапно обнаружил что можно у событий ставить маркер "async" и методы замечательно работают.
Вопрос 2: Так как я не могу найти подробного ответа по вопросу 1, то возник вопрос - это так любые методы событий можно перевести в async? или же всё-таки есть какие-то ограничения. Уже продолжение мыслей. Если они по умолчанию доступны во всех реализациях, то не проще ли будет сразу, при разработке, всё маркировать. Много ресурсов это вроде бы не должно выделять, а вот польза должна быть. Добавлено через 11 минут Нашёл только одну интересную статейку. https://www.programmersought.c... 725055430/ Control.ы имеют интерфейс ISyncronizeInvoke (оно и понятно) с асинхронными методами. Видимо это сразу и даёт возможность события контролов вызывать двумя методами. Тогда теоритически для не-контролов это не сработает. Например события биндингсурса и т.п.
0
|
||||||
| 19.07.2021, 10:24 | |
|
Ответы с готовыми решениями:
10
Как проверить, назначен ли уже обработчик события? Зачем нужны события, когда уже есть делегаты? Ошибка, что база уже открыта oткрыть Exclusive уже неудaется. |
|
Администратор
|
|||||
| 19.07.2021, 14:50 | |||||
Сообщение было отмечено HF как решение
РешениеДобавлено через 2 минуты
1
|
|||||
|
Администратор
|
|
| 19.07.2021, 15:39 | |
|
HF, нужно больше читать значит. Потому что async void обязательно всплывает при обсуждении чего нужно избегать при написании async/await кода, с поясненями когда это все-таки допустимо.
Добавлено через 2 минуты Например - Async/Await - Best Practices in Asynchronous Programming
0
|
|
|
14122 / 9341 / 1350
Регистрация: 21.01.2016
Сообщений: 35,099
|
|
| 21.07.2021, 06:26 | |
|
0
|
|
|
|
||
| 21.07.2021, 08:32 [ТС] | ||
|
Конечно у методов, конечно async был ещё в C#. Речь именно про события. Объясню. Чтобы создать событие реакции на клик мышкой (например), мы добавляем событие в форму через +=. Но, в отличие от методов, мы же не можем вызвать их через "+= await EventMethod". Приложение их само вызывает. И вдруг (для меня) стало открытием что я просто могу у них добавить этот дескриптор и ... метод события "превратился в async метод". Но опыт показал что никакой пользы это (мне лично в моей программе) не приносит. Всё работает в основном потоке, окно блокируется. Полностью переписанная асинхронная цепочка разблокировала интерфейс, но всё равно где-то "затыкается".Это я к чему. Первая версия просто вызывала Task.Run из события и работала идеально и не нужно было рефакторить половину проекта. Потом я вспомнил про ASP.NET, там тоже к контроллерам async добавили. Польза примерно такая же. Пока что я сделал вывод - хочешь асинхронности - создай сам и управляй (таски, пулы и т.п.). А эта работа этой автоматизации ещё для меня под вопросом.
0
|
||
|
14122 / 9341 / 1350
Регистрация: 21.01.2016
Сообщений: 35,099
|
|||
| 21.07.2021, 09:03 | |||
|
0
|
|||
|
|
|||||||||||||||||
| 21.07.2021, 09:09 | |||||||||||||||||
void объявляется так
Асинхронное программирование с использованием ключевых слов async и await
0
|
|||||||||||||||||
|
|
|||
| 21.07.2021, 09:18 [ТС] | |||
|
- парсинг файла - диалог, одна кнопка старт и прогресс бар - чтобы отображать прогресс бар, нужно файл читать построчно. Раньше, - запускал в task.run метод - который вызывает сервис - который грузит файл в Enumerable - и парсит эти строки - возвращая другую коллекцию. Я решил переделать всё на async. В итоге уткнулся на File.ReadAllLines. Пришлось и его переписать на ReadAllLinesAsync, но он возвращает IAsyncEnumerable. Можно конечно снова завернуть в IEnumerable, но тогда какой толк если не пользоваться async, Но IAsynEnumerable нельзя вернуть методом. Ну и дальше всё тоже пошло по такой же цепочке. Везде появились "async foreach". Диалог перестал блокироваться, но в какой-то момент (например при половине загруженного) тоже перестаёт отвечать. Просто ради "спортивного интереса" хочу достичь нормального результата, но эта глупость с async мне не нравилась. В итоге просто всё приложение должно быть покрыто этими дескрипторами. Добавлено через 3 минуты А ну да. Ключевая проблема - желание отображать прогресс бар. Если отключить это, то диалог не блокируется. Поэтому пока я считаю что или ещё ньюанс как легко обрабатывать IAsyncEnumerable (а я не знаю), или усложнённый процесс (await foreach) работы с IAsyncEnumerable даёт подобные блокировки в переключении контекста. Добавлено через 1 минуту
0
|
|||
|
Администратор
|
|||||||
| 21.07.2021, 12:36 | |||||||
0
|
|||||||
|
|
||
| 21.07.2021, 14:12 [ТС] | ||
|
ReadAllLinesAsync используется для без поддержки прогресса.
0
|
||
| 21.07.2021, 14:12 | |
|
Помогаю со студенческими работами здесь
11
Текстовой файл с уже введенным текстом зашифровать и вывести уже зашифрованный
Асинхронные делегаты асинхронные делегаты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит:
токи, напряжения и их 1 и 2 производные при t = 0;. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|