我是WPF的新手,我想知道听取属性更改会使我的自定义控件不被垃圾收集......
基本上,我会听这样的事件:
obj.PropertyChanged += this.The_PropertyChanged;
我担心在obj
仍然存在时,我执行代码的控件无法进行垃圾回收,因为obj.PropertyChanged
包含对this
的引用。它是否正确?如果是这样,避免这种情况的正确方法是什么?如果我被正确通知,则当从屏幕移除控件时,没有Dispose()
方法可以被覆盖以便调用,因此没有明显的位置可以从this.The_PropertyChanged
中删除obj.PropertyChanged
...
答案 0 :(得分:0)
是的,你是对的。 obj将引用"这个"因此"这个"不会收集垃圾。解决方案是:
obj.PropertyChanged -= this.The_PropertyChanged;
你会把那个代码放在"这个"是封闭的,处置的,否则明智的不再是周围。
因此,对于控件,如果关闭了承载控件的Window,那么可以放置代码。