2009-07-15 43 views
4

在我的複合WPF應用程序中,我有一個用戶雙擊控件時發佈的事件。模塊訂閱事件並在必要時執行操作。複合WPF EventAggregator訂閱正在丟失

此事件似乎隨機停止工作。有時當我運行應用程序時,我可以毫無問題地觸發事件,其他時候我只能在模塊停止接收事件之前觸發它幾次。

當我查看調試器時,CAL EventAggregator仍然有事件,但該事件沒有訂閱。 EventAggregator如何失去訂閱?

回答

4

原來是垃圾收集器刪除訂閱。我必須對內部讀了起來,但是當我更換

this.mEventAggregator.GetEvent<SomeEvent>().Subscribe(SomeFunction); 

this.mEventAggregator.GetEvent<SomeEvent>().Subscribe(
    SomeFunction, ThreadOption.UIThread, true); 

它開始工作。 UI線程參數不是我的問題,但對於其他人來說,確保您也在正確的線程上處理事件可能很重要。

+1

EventAggregator使用弱引用(http://msdn.microsoft.com/en-us/library/ms404247.aspx),除非您明確地告訴它不要。 – 2009-07-15 19:07:43

相關問題