2012-09-06 10 views
7

Sono iscritto e annullando l'iscrizione a eventi prism utilizzando il codice riportato di seguito in ClasseA. Il problema che sto riscontrando è dopo Annullo l'iscrizione e un'altra classe completamente diversa, ad esempio ClassB, con registri di gestori diversi per lo stesso evento, viene ancora richiamato il gestore ClassA. Perchè è questo?Prism Annulla sottoscrizione con token di abbonamento non funzionante

Ho provato sia l'annullamento dell'iscrizione utilizzando un token sia il metodo delegato utilizzato durante la registrazione, entrambi senza alcun risultato.

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

Uomo, ho avuto lo stesso problema e alla fine l'ho risolto ... ma era passato più di un anno e ora non riesco a ricordare quale fosse la soluzione o la soluzione. : \ – xanadont

+2

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

+1

SubscriptionToken implementa anche IDisposable. Hai provato a richiamare Dispose invece di chiamare Annulla iscrizione su EventAggregator? – Jehof

risposta

0

Non sono sicuro del codice di subscriptiontoken qui.

Ma, siamo in grado di iscrivere e cancellare l'evento come segue:

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

e

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

Funziona per me.

2

Non credo che l'annullamento dell'iscrizione possa funzionare in quanto è stato utilizzato un metodo anonimo nella chiamata Abbonati. Prova a spostare il codice per iscriverti in un metodo separato e il subscribe/unsubscribe to/from it.

Problemi correlati