2012-09-06 48 views
7

Me suscribo y me desconecto de eventos de prisma usando el código siguiente en ClassA. El problema que estoy teniendo es después de Anular la suscripción, y otra clase completamente diferente, digamos ClassB, con un controlador diferente registra para el mismo evento, ClassA controlador todavía se invoca. ¿Por qué es esto?Prisma Cancelar suscripción con token de suscripción no funciona

He intentado anular la suscripción utilizando un token y el método de delegado utilizado al registrar, ambos en vano.

SubscriptionToken _subscriptionToken; 

//register subscription + handler 
var pevent = GetEventAggregator().GetEvent<PriceSubscriptionEvent>(); 
_subscriptionToken = pevent.Subscribe(r => 
{ 
    DataHandler(r); 
    return; 
}, ThreadOption.BackgroundThread, false, null); 

//Unsubscribe 
var pevent = GetEventAggregator().GetEvent<PriceSubscriptionEvent>(); 
pevent.Unsubscribe(_subscriptionToken); 
+0

Hombre, tuve el mismo problema y finalmente lo resolví ... pero eso fue hace más de un año y ahora no puedo recordar cuál fue la solución o la solución. : \ – xanadont

+2

http://stackoverflow.com/questions/4310663/wpf-prism-event-subcriptions-not-dying – xanadont

+1

SubscriptionToken también implementa IDisposable. ¿Intentó invocar Dispose en lugar de llamar Unsubscribe en EventAggregator? – Jehof

Respuesta

0

No estoy seguro acerca de subscriptiontoken code here.

embargo, podemos suscribirse y darse de baja del evento como sigue:

evenaggregator.GetEvent<EventName>().Subscribe(eventhandler); 

y

evenaggregator.GetEvent<EventName>().Unsubscribe(eventhandler); 

Funciona para mí.

2

No creo que la Anulación de suscripción pueda funcionar allí ya que usó un método anónimo en su llamada de Suscribir. Intente mover el código para suscribirse en un método diferente y suscribirse/cancelar suscripción a/desde él.

Cuestiones relacionadas