由于命令,Silverlight控件不被垃圾收集

时间:2011-05-17 14:02:43

标签: silverlight memory-leaks

我的控制因为它所绑定的命令而保持活着。我怎么能打破这个参考?这导致我的应用程序中出现重大内存泄漏。该控件位于DataTemplate内部,因此我无法直接访问它。

这是我的ANTS内存配置文件:

ANTS memory profile

我究竟如何打破这种联系?

1 个答案:

答案 0 :(得分:2)

虽然我合并了WeakEventListener,但我发现我的问题在于我用来封装图片的控件。我把它挂钩到DownloadProgressImageOpenedImageFailed事件,从未解开它们。我的想法是,我的代码中没有任何其他内容触及BitmapImage对象,因此它们将被控件垃圾收集。它看来,情况并非如此。 BitmapImage对象由Microsoft的代码深处称为“ManagedPeerTable.PeggedManagedPeersWithRefs”的静态成员(因此是GC根)引用。它非常深,谷歌搜索只返回了五个结果。现在我想会有六个。