当附加的dependencyobject被销毁\断开时的垃圾收集

时间:2009-12-16 11:39:57

标签: wpf memory-leaks garbage-collection attached-properties

当我们对任何依赖项对象使用任何附加属性时,我发现它实际上映射了属性和值与依赖项对象。

E.g。 <DockPanel><TextBlock x:Name="MyText" DockPanel.Dock="Top"/></DockPanel>

此处值“Top”通过依赖项对象文本块“MyText”与DockPanels DockProperty映射

但我的问题是此映射何时处理?我问这个的原因是DockPanel的DockProperty是静态\共享的。所以它必须具有这样的多个映射对(值,依赖对象)在某种内部字典中对其进行编码。 (只是一个猜测)

因此,在销毁依赖项对象时必须对其进行垃圾回收。

所以现在我的观点是,我是否应该知道如果发生这样的附加属性,就会发生这种情况(就像给定附加属性和依赖对象的某种失望或处置事件一样)?

此外,如果没有发生此类垃圾收集,那么这不是内存泄漏吗?

THX Vinit Sankhe。

2 个答案:

答案 0 :(得分:2)

据我了解WPF中的新属性系统,DependecyObject本身存储了该值。 在您的示例中,这将是文本块。 当你调用静态成员时不要感到困惑 - 它应该被实现为:

element.SetValue(DockPanel.TopProperty, value);

所以没有静态字段存储。

答案 1 :(得分:1)

我认为它是使用WeakReference创建的。因此,定期删除空引用。