C# Prism取消订阅,订阅令牌不起作用

C# Prism取消订阅,订阅令牌不起作用,c#,.net,prism,C#,.net,Prism,我使用ClassA中下面的代码订阅和取消订阅prism事件。我遇到的问题是,在我取消订阅之后,,另一个完全不同的类,比如ClassB,使用不同的处理程序注册同一事件,ClassA处理程序仍然被调用。为什么会这样 我尝试过使用令牌取消订阅,以及注册时使用的委托方法,但均无效 SubscriptionToken _subscriptionToken; //register subscription + handler var pevent = GetEventAggregator().GetEve

我使用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\u SubscriptionToken;
//注册订阅+处理程序
var pevent=GetEventAggregator().GetEvent();
_subscriptionToken=pevent.Subscribe(r=>
{
数据处理器(r);
返回;
},ThreadOption.BackgroundThread,false,null);
//退订
var pevent=GetEventAggregator().GetEvent();
p取消订阅(_subscriptionToken);

我不确定这里是否有subscriptiontoken代码

但是,我们可以按如下方式订阅和取消订阅活动:

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

evenaggregator.GetEvent().Unsubscribe(eventhandler);

这对我很有效。

我认为取消订阅在那里不起作用,因为你在订阅呼叫中使用了匿名方法。试着用一个单独的方法移动订阅的代码,并将订阅/取消订阅移到/从中移出。

伙计,我遇到了同样的问题,最终解决了它。。。但那是一年多以前的事了,现在我记不起修复或解决方法了\SubscriptionToken还实现IDisposable。您是否尝试调用Dispose而不是调用EventAggregator上的Unsubscribe?仅供参考:此处不执行“ping”,请以后不要再执行此操作。请尝试此链接:
evenaggregator.GetEvent<EventName>().Unsubscribe(eventhandler);