我使用以下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);
答案 0 :(得分:2)
我不认为Unsubscribe可以在那里工作,因为您在订阅电话上使用了匿名方法。尝试在单独的方法中移动订阅代码,并从中订阅/取消订阅。
答案 1 :(得分:0)
我不确定这里的预订代码。
但是,我们可以订阅和取消订阅活动,如下所示:
evenaggregator.GetEvent<EventName>().Subscribe(eventhandler);
和
evenaggregator.GetEvent<EventName>().Unsubscribe(eventhandler);
它对我有用。