У меня интересная проблема с CAL и агрегатором событий. Я пытаюсь опубликовать событие, когда приложение деактивировано или активировано (application.activation и application.deactivation). Некоторые из моих модулей имеют всплывающие окна, которые я хочу скрыть, когда приложение теряет фокус.
это небольшой пример кода ниже
App.xaml.cs
protected override void OnStartup(StartupEventArgs e)
{
eventAggregator.GetEvent<AppDeactivatedEvent>().Subscribe(RunIt);
Deactivated += (s, a) => eventAggregator.GetEvent<AppDeactivatedEvent>().Publish(EmptyPayload.Empty);
Deactivated += (s, a) => Console.WriteLine("Deactivated - in app.xaml");
Activated += (s, a) => eventAggregator.GetEvent<AppActivatedEvent>().Publish(EmptyPayload.Empty);
base.OnStartup(e);
}
Module.cs
ea.GetEvent<AppActivatedEvent>().Subscribe(presenter.AppDeactivated);
1011 * Ведущий *
public void AppDeactivated(EmptyPayload empty)
{
Console.WriteLine("App Deactivated - Module");
}
Что происходит, когда приложение теряет фокус, я получаю в консоли следующее
Деактивировано - в app.xaml
Когда приложение восстанавливает фокус, я получаю следующее
Приложение деактивировано - модуль
Любые идеи о том, почему агрегатор событий будет ждать, пока приложение не восстановит фокус для запуска события.
Спасибо