0
我知道.NET中有一個'EventHandlerManager'。我讀過有關內存泄漏,如果你不釋放對象之前退訂的事件......避免事件內存泄漏
我有以下代碼:
public Person CurrentPerson
{
get { return currentPerson; }
set
{
if (currentPerson!= null) currentPerson.PropertyChanged -= propertyChanged;
currentPerson= value;
currentPerson.PropertyChanged += propertyChanged;
RaisePropertyChanged(() => CurrentPerson);
}
}
此屬性是像一個臨時佔位符,每當我打電話:
CurrentPerson = new Person();
我想聽它的propertyChange事件......我不確定是否在事件處理時防止內存泄漏。
感謝您的幫助
如何處置具有CurrentPerson屬性的對象。當包含屬性的對象被歸檔時,您需要取消訂閱PropertyChanged事件。 –
這段代碼非常荒謬,對於一個班級來說,聽它自己的事件從來沒有任何意義。你可以直接調用this.propertyChanged()來代替。但至少有一個優點,它不可能導致任何泄漏。 –
Hans Passant,這段代碼來自我的viewmodel ... CurrentPerson並沒有在'Person'類中實現。 – GrayFox