WPF内存泄漏与自定义控件

时间:2012-08-13 02:02:07

标签: c# wpf memory memory-leaks

我想处理一个我正在动态添加到我的应用程序的控件。垃圾收集器在从其父控件.Remove()之后没有拾取对象,并且它具有巨大的位图和几何私有成员。

我希望能够做到这样的事情:

foreach (ScrollItem mylabel in canvas1.Children)
{
    if (mylabel.bRemove == true)
    {
        canvas1.Children.Remove(mylabel);
        mylabel = null;  // or mylabel.Dispose();
    }
}

canvas1UIObjectCollection中不能包含空项,因此我无法将其设置为null,如果我只是Remove(),则垃圾收集器不会收集它。

我尝试过这样的事情:

myobj = mylabel;
canvas1.Children.Remove(mylabel);
myobj = null;

但这也不起作用。

1 个答案:

答案 0 :(得分:4)

只要没有对您的对象的引用,GC就会收集它。检查您的应用是否有对您的对象的任何其他引用。这通常可以是事件订阅者。您可能也想使用.NET内存分析器,看看是什么阻止了您的对象使用GC。