2011-10-25 37 views
7

要做一個很長的故事短...這是一個很大的WPF項目PropertyChangedEventManager何時創建,何時連接?

我有一個類「病人」,實現INotifyPropertyChanged。當我處理這個類時,我檢查PropertyChangedEventHandler爲空,如果沒有運行到ListenerDetector類,它會記錄偵聽器,以便我們可以跟蹤它們並清除泄漏。患者確實具有一些綁定到WPF元素的屬性以及使用其PropertyChanged來監視更改的其他對象。

其他處置的一切後,我的日誌結果如下:

日誌:病人仍貼有以下監聽器(S): - System.ComponentModel.PropertyChangedEventManager

問: 當是PropertyChangedEventManager創建?

  • 當創建
  • 患者在WPF結合病人的財產
  • 其他一些點。

如果Patient.PropertyChangedEventHandler設置爲null,因此從PropertyChangedEventManager斷開連接有沒有什麼辦法來重新管理公司和擁有它聽再次Patient.PropertyChangedEventHandler?請不要問爲什麼會發生這種情況,這是一個緊張點在這裏:-(

回答

7

PropertyChangedEventManager是由WPF創建的,以支持綁定到實現INotifyPropertyChanged的任何類,它將被創建並用作一旦綁定到任何類,它實現INotifyPropertyChanged

話雖這麼說,其WeakEventManager模式的實現。雖然它仍然顯示連接監聽器,實現這個監聽器是使用Weak Event Pattern附後。這將大大因爲它使用弱引用來保存訂閱,所以這個特定的訂閱不應該這樣做成爲(長期)內存泄漏的原因。

相關問題