从父项中删除WPF控件会发生什么?

时间:2014-07-30 11:50:43

标签: c# .net wpf user-interface user-controls

调用此函数时,WPF用户控件会发生什么情况:uiElement.Childen.Remove(foo)是否在GC处将其标记为已删除或仅挂起在内存中?

1 个答案:

答案 0 :(得分:1)

如果没有其他引用foo,它应该可用于垃圾回收。

您可以尝试添加Finalizer进行检查:

class MyElement
{
    // ...
    ~MyElement()
    {
        Console.WriteLine("~MyElement()");
    }
}

并致电

uiElement.Childen.Remove(foo);
GC.WaitForPendingFinalizers();
Console.WriteLine("After GC.WaitForPendingFinalizers()");

然后检查您是否在输出窗口中"~MyElement"之前看到"After GC.WaitForPendingFinalizers()"