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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top