Как управлять последовательностью выполнения обработчика событий с помощью EventAggregator в Prism

Я использую Prism EventAggregator в своем приложении. В моем сценарии это модуль загрузки, после завершения загрузки опубликуйте событие. Четыре ViewModel подписываются на это событие и имеют свой собственный обработчик событий, некоторые для записи файла журнала, некоторые для обновления пользовательского интерфейса.

  • Как контролировать последовательность выполнения этих обработчиков событий?
  • Есть ли параллельное выполнение?

person Allen4Tech    schedule 03.12.2013    source источник


Ответы (1)


По умолчанию они выполняются в том же потоке, в котором было опубликовано событие. Если вы указываете поток (UI/Worker), то они могут выполняться параллельно.

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

Зачем вам порядок? Это потому, что у вас много фаз инициализации? Отправьте отдельное сообщение для каждой фазы.

person Gusdor    schedule 03.12.2013
comment
После завершения загрузки я использую aggregator.GetEvent‹›().Publish() для публикации сообщения, в конструкторе четырех моделей представления я использую aggregator.GetEvent‹›().Subscribe() для подписки на событие. Вы имеете в виду, что последовательность выполнения зависит от того, какой конструктор из четырех моделей представления выполняется? Или я неправильно его использую? - person Allen4Tech; 03.12.2013
comment
порядок выполнения обработчика зависит от хронологического порядка вызова метода Subscribe(). - person Gusdor; 03.12.2013
comment
Если вы используете Prism 2.0, он вызывает подписчиков в обратном порядке compositewpf.codeplex.com/workitem/3738 - person Sandeep Singh Rawat; 26.12.2013