【发布时间】:2012-09-06 22:48:00
【问题描述】:
我正在使用 ClassA 中的以下代码订阅和取消订阅 prism 事件。我遇到的问题是在我取消订阅后,另一个完全不同的类,比如 ClassB,为同一事件注册了不同的处理程序,仍然调用 ClassA 处理程序。这是为什么呢?
我尝试过使用令牌退订以及注册时使用的方法委托,均无济于事。
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);
【问题讨论】:
-
伙计,我遇到了同样的问题并最终解决了它......但那是一年多以前的事了,现在我不记得修复或解决方法是什么了。 :\
-
SubscriptionToken 也实现了 IDisposable。您是否尝试在 EventAggregator 上调用 Dispose 而不是取消订阅?
-
仅供参考:我们这里不做“ping”,以后请不要这样做。