|
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
|
|
.NET 4.x Запуск события из фонового потока для взаимодействия с основным16.08.2019, 10:00. Показов 6008. Ответов 31
Метки нет (Все метки)
Доброго всем времени суток!
У меня есть некий класс, у него есть событие, на него подписано какое-то количество других классов. Эти самые слушатели должны взаимодействовать по результатам события с UI, то есть что-то отображать на морде программы. Класс же, который это событие возбуждает работает в фоновом потоке, там потенциально бесконечный цикл крутится и иногда должен сообщать о том, что у него что-то произошло. С принципом работы событий я только начал разбираться по человечески, но к сожалению на этот гипотетический вопрос не смог найти ответа по интернетам. Буду признателен за любой совет!
0
|
|
| 16.08.2019, 10:00 | |
|
Ответы с готовыми решениями:
31
|
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,752
|
|
| 21.08.2019, 07:49 | |
|
amr-now, речь не о том где выполнится задача в await, а в том, что будет в это время с методом в котором этот await присутствует. А будет только одно: метод не будет исполняться, пока задача в await не завершится. Параллельное же исполнение не заставляет метод ожидать окончания запущенной задачи.
0
|
|
|
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
||
| 21.08.2019, 07:55 | ||
|
Да, строится очень сложный конечный автомат. Параллельное исполнение очень жестко подразумевает исполнение в другом thread. Асинхронность (конкурентность) в этом смысле не прибита гвоздями к thread.
0
|
||
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,752
|
|
| 21.08.2019, 09:17 | |
|
amr-now, так я и не говорил, что прибита.
0
|
|
|
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
|
|||||||||||||||
| 21.08.2019, 13:09 | |||||||||||||||
.Назначение второго метода - создать "горячую" таску. Когда этот метод возвращает управление, есть гарантия, что эта задача уже создана. Поэтому я назвал его синхронным. По-моему всё просто. Я рассматриваю код на одном уровне абстракции, а не лезу к ему под капот. Если лезть под капот, то можно более сложные картины наблюдать: одни операции выполняются синхронно, другие асинхронно, третьи параллельно, но после того как дождутся выполнения первой асинхронной операция, причем не дожидаясь второй асинхронной и тд. Зачем вызывающему знать про синхронность/асинхронность метода? Чтобы, например, писать такой код:
0
|
|||||||||||||||
|
14371 / 9478 / 1360
Регистрация: 21.01.2016
Сообщений: 35,752
|
|||||
| 21.08.2019, 13:19 | |||||
|
0
|
|||||
|
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
|
|
| 21.08.2019, 13:33 | |
|
А как сделать так чтобы метод запустился и когда он отработает уже параллельно, главное чтобы отработал быстро. Типо рассылки одного пакета по всем адресатам.
0
|
|
|
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
|
||
| 21.08.2019, 14:14 | ||
|
Usaga, https://en.wikipedia.org/wiki/... rogramming)
0
|
||
|
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
||
| 21.08.2019, 14:23 | ||
|
TopLayer, гуглоперевод доставляет.
![]() Добавлено через 2 минуты ---- Хотя в английской Википедии определение явно плохое и не соответствует описанию ситуации.
0
|
||
|
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
|
|
| 21.08.2019, 14:27 | |
|
0
|
|
|
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
||
| 21.08.2019, 15:49 | ||
|
Что-то нашел.
C# 6.0 IN A NUTSHELL Joseph Albahari & Ben Albahari
Есть "long-running function" - "рабочий код". И есть авианосец, с которого взлетает этот "рабочий код". В new Thread() и в Task.Run() мы этот авианосец расписываем в открытом виде, пиная рабочий код в отдельный thread. А с помощью await мы запускач "рабочего кода" тщательно маскируем. Но это всё равно не совсем полное определение. Потому что существует Event-based Asynchronous Pattern, который обходится без await. И при этом он истинно асинхронный в самом догматическом понимании. Добавлено через 11 минут ---- Грубо говоря, общая проблема в наши дни не в определении формулировки. А в том, что "рабочий код" возвращает единственный результат и генерит единственное событие своего завершения, на которое подписывается await. Второй вариант - есть гипотетическая цепочка событий, состоящая из конечного числа элементов (что-то где то завершилось или вернуло результат). Третий вариант - гипотетическая цепочка событий, состоящая из бесконечного числа элементов, не планирующая никогда по своей воле завершаться. Вот как раз третью цепочку целиком не дождешься. Два предыдущих варианта полностью дождаться можно. Добавлено через 12 минут ----------- Показали пример, что на событие завершения Task можно повесить несколько подписчиков. Прикольно. А await приспособлен для единственного подписчика.
0
|
||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,236
|
|||
| 21.08.2019, 19:58 | |||
![]() Асинхронность - отсутствие ожидания = то есть это либо синхронное выполнение (если кусок логики достаточно короткий) + либо параллельное, если задача действительно занимает поток на достаточное долгое время , а нам нельзя по каким-то причинам его долго занимать на эту задачу
Если авианосцу плыть достаточно близко, то он сам поплывет, если далеко, то он пнет какой-нибудь истребитель. ![]() Лично я так вижу эту картину, надо как-нибудь поглубже покопаться в TPL, чтобы уж действительно в деталях.
0
|
|||
|
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
|
| 21.08.2019, 21:26 | |
|
На Хабре спрашивают: "А почему в рунете отсутствует формулировка конкурентности?"
Ответ: "Да просто забили. Не надо никому было." Хотя буржуи очень даже отличают конкурентность от параллелизма. https://wiki.haskell.org/Paral... oncurrency Хотя интересная картина маслом, оказывается можно использовать технологию, в принципе никак её не называя.
1
|
|
| 21.08.2019, 21:26 | |
|
Получение значения из фонового потока и передача его в главный поток Запуск потока для функции с параметрами Способ вызова из фонового потока метода, но чтобы последний выполнялся в главном потоке Запуск Process: Операция асинхронного чтения для потока уже запущена
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|