Prism取消订阅订阅令牌不起作用

时间:2012-09-06 22:48:01

标签: c# .net prism

我使用以下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);

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我不确定这里的预订代码。

但是,我们可以订阅和取消订阅活动,如下所示:

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

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

它对我有用。