3
我有一個TestEvent類匿名過濾委託解僱沒有被解僱。但是,如果我這樣認購它:棱鏡CompositeEvent不與助手類指定
eventAggregator.GetEvent<TestEvent>().Subscribe(_ => MessageBox.Show("Hi"), ThreadOption.PublisherThread, false, arg => arg.Equals(3));
它'火'。儘管在概念上,從句法和邏輯上都是相似的。唯一的區別是第一個使用事件類中的助手方法來訂閱事件。
我敢肯定,這是關於由CompositeEvent類保留的委託的弱引用相關的事情,因爲如果我在訂閱調用中設置keepSubscriberAlive = true(第三個參數),第一個工作。我不能只用這個解決方案,因爲我不知道它會保持活力的是什麼?這會是訂閱該活動的班級嗎?如果是這樣的話,那麼即使沒有傳遞錯誤,這個班還活着,那麼爲什麼這個事件在第一種情況下不會被解僱/處理?
任何人都可以解釋這種行爲嗎?