3
我有一个TestEvent类匿名过滤委托解雇没有被解雇。但是,如果我这样认购它:棱镜CompositeEvent不与助手类指定
eventAggregator.GetEvent<TestEvent>().Subscribe(_ => MessageBox.Show("Hi"), ThreadOption.PublisherThread, false, arg => arg.Equals(3));
它'火'。尽管在概念上,从句法和逻辑上都是相似的。唯一的区别是第一个使用事件类中的助手方法来订阅事件。
我敢肯定,这是关于由CompositeEvent类保留的委托的弱引用相关的事情,因为如果我在订阅调用中设置keepSubscriberAlive = true(第三个参数),第一个工作。我不能只用这个解决方案,因为我不知道它会保持活力的是什么?这会是订阅该活动的班级吗?如果是这样的话,那么即使没有传递错误,这个班还活着,那么为什么这个事件在第一种情况下不会被解雇/处理?
任何人都可以解释这种行为吗?