As assinaturas compostas do WPF EventAGregreator sendo perdidas
-
16-09-2019 - |
Pergunta
No meu aplicativo WPF composto, tenho um evento publicado quando o usuário clica duas vezes em um controle. Os módulos assinam o evento e executam uma ação quando necessário.
Este evento parece parar de funcionar aleatoriamente. Às vezes, quando executo o aplicativo, posso acionar o evento sem problemas, outras vezes, só posso acioná -lo algumas vezes antes que os módulos parem de receber o evento.
Quando eu olho no depurador, o cal EventAggregator
Ainda tem o evento, mas o evento não tem assinaturas. Como pode EventAggregator
estar perdendo assinaturas?
Solução
Acontece que foi o coletor de lixo removendo as assinaturas. Vou ter que ler os internos, mas quando substituí
this.mEventAggregator.GetEvent<SomeEvent>().Subscribe(SomeFunction);
com
this.mEventAggregator.GetEvent<SomeEvent>().Subscribe(
SomeFunction, ThreadOption.UIThread, true);
começou a funcionar. Os parâmetros do encadeamento da interface do usuário não foram o meu problema, mas para outros pode ser importante garantir que você também esteja lidando com o evento no tópico certo.