Задать вопрос

Что происходит под капотом, когда я вызываю MyEvent?.Invoke, MyEvent.BeginInvoke?

Что происходит под капотом, когда я вызываю у события MyEvent?.Invoke(), MyEvent.BeginInvoke() в с#?
В каким потоках происходит выполнение?
Какое отношение имеет к Dispatcher.Invoke(), Dispatcher.BeginInvoke().

по этому ответу недостаточно понятно, поэтому спрашиваю.

Правильно ли я понял:
При MyEvent?.Invoke() выполнение останавливается, пока не будут выполнены все привязанные обработчики событий.
При MyEvent?.BeginInvoke() выполнение не останавливается, параллельно запускаются несколько потоков из ThreadPool на каждый привязанный обработчик?
  • Вопрос задан
  • 256 просмотров
Подписаться 4 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    SDP-030_PRG Продвинутая разработка в Microsoft .NET
    1 неделя
    Далее
  • Ulearn.me
    Проектирование на языке C#
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
Мне кажется, вот этот ответ достаточно хорош:
https://stackoverflow.com/questions/1916095/how-do...
Тоесть да. Будет взят поток из thread pool, но не забывай вызывать EndInvoke, иначе поток не вернётся в пул.

А вообще лучше вместо event-ов использовать Rx: https://github.com/dotnet/reactive
Если это делается в UI, то есть ещё надстройка поверх него: https://github.com/reactiveui/ReactiveUI
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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