当WPF控件从父控件中删除时会发生什么

本文关键字:控件 什么 WPF 删除 | 更新日期: 2023-09-27 18:15:31

当调用此函数时,WPF用户控件会发生什么:uiElement.Childen.Remove(foo)它是否标记为GC要删除或它只是挂在内存中?

当WPF控件从父控件中删除时会发生什么

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

您可以尝试添加Finalizer来检查它:

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

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

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