Compuestos suscripciones WPF EventAggregator están perdiendo
-
16-09-2019 - |
Pregunta
En mi aplicación WPF Compuesto tengo un evento que se publica cuando el usuario hace doble clic en un control. Módulos suscribirse al evento y realizar una acción cuando sea necesario.
Este evento ha dejado de funcionar de forma aleatoria. A veces, cuando corro la aplicación que pueda desencadenar el evento sin problemas, otras veces sólo pueden desencadenar un par de veces antes de que los módulos de dejar de recibir el evento.
Cuando miro en el depurador del EventAggregator
CAL todavía tiene el evento, pero el evento no tiene suscripciones. ¿Cómo puede estar perdiendo EventAggregator
suscripciones?
Solución
Resulta que era el recolector de basura eliminación de las suscripciones. Voy a tener que leer sobre el funcionamiento interno, pero cuando reemplacé
this.mEventAggregator.GetEvent<SomeEvent>().Subscribe(SomeFunction);
con
this.mEventAggregator.GetEvent<SomeEvent>().Subscribe(
SomeFunction, ThreadOption.UIThread, true);
que comenzó a trabajar. Los parámetros de la interfaz de usuario de hilo no era mi problema, pero para otros puede ser importante para asegurarse de que está manejando el caso en el hilo de la derecha también.