7

我正在使用 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);
4

2 回答 2

3

我不认为取消订阅可以在那里工作,因为您在订阅调用中使用了匿名方法。尝试在单独的方法中移动订阅代码,然后订阅/取消订阅/取消订阅。

于 2013-03-20T13:10:22.493 回答
0

我不确定这里的订阅令牌代码。

但是,我们可以按如下方式订阅和取消订阅该事件:

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

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

这个对我有用。

于 2012-11-19T10:56:40.997 回答