2015-09-28 4 views
2

У меня есть аналогичный вопрос на этот пост Prism CompositePresentationEvent fires twicePrism EventAggregator подписываться выполнения дважды

Моя проблема заключается в том, что Publish только стрелять один раз, но код в Subscribe дважды выполняется.

Вот мой код публикации.

EventAggregator.GetEvent<PubSubEvent<HardwareLoaded>>().Publish(new HardwareLoaded() { HardwareOK = _HardwareOK }); 

И код подписки.

IEventAggregator.GetEvent<PubSubEvent<HardwareLoaded>>().Subscribe(x => 
{ 
    if (!x.HardwareOK) 
    { 
     MessageBox.Show("There was an issue loading hardware. See Log"); 
    } 

    LoadingVisibility = Visibility.Collapsed;     
}); 

я поставил точку останова как Publish и Subscribe и может видеть, что публиковать только срабатывает один раз, но подписываться код пожаров дважды. Это подтверждается сообщением, показывающим дважды. Я запустил поиск любого другого кода публикации и не нашел его.

Любые идеи?

+0

Лямбда, переданная в 'Подписаться', называется один раз, это мы знаем, но, возможно, вызов' Подписка' был сделан дважды? –

+0

Где вы объявили код Subscribe? Может быть, это ваш код, вызывающий его дважды? – Bijington

+0

@Bijington ах, это точка, поэтому он фактически подписывается дважды. У меня будет чек. – Gaz83

ответ

3

Убедитесь, что метод Subscribe вызывается только один раз.

Если он вызывается дважды, одно и то же событие вызывает тот же обратный вызов, как и если бы были разные обработчики, реагирующие на одно и то же событие.

+0

Отсортировано, кредит вам и Bijington. Я подписывался в конструкторе viewmodel. Код конструктора фактически вызывался дважды. – Gaz83

Смежные вопросы