PropertyChangedEventHandler是否使我的自定义控件不被垃圾回收?

时间:2015-11-20 21:25:42

标签: c# wpf

我是WPF的新手,我想知道听取属性更改会使我的自定义控件不被垃圾收集......

基本上,我会听这样的事件:

obj.PropertyChanged += this.The_PropertyChanged;

我担心在obj仍然存在时,我执行代码的控件无法进行垃圾回收,因为obj.PropertyChanged包含对this的引用。它是否正确?如果是这样,避免这种情况的正确方法是什么?如果我被正确通知,则当从屏幕移除控件时,没有Dispose()方法可以被覆盖以便调用,因此没有明显的位置可以从this.The_PropertyChanged中删除obj.PropertyChanged ...

1 个答案:

答案 0 :(得分:0)

是的,你是对的。 obj将引用"这个"因此"这个"不会收集垃圾。解决方案是:

obj.PropertyChanged -= this.The_PropertyChanged;

你会把那个代码放在"这个"是封闭的,处置的,否则明智的不再是周围。

因此,对于控件,如果关闭了承载控件的Window,那么可以放置代码。