1

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

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

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

canvas1a 中不能有空项目,UIObjectCollection所以我不能将它设置为空,如果我只是Remove()这样,垃圾收集器就不会收集它。

我试图做类似的事情:

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

但这也不起作用。

4

1 回答 1

4

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

于 2012-08-13T08:52:22.040 回答