调用此函数时,WPF用户控件会发生什么情况:uiElement.Childen.Remove(foo)
是否在GC处将其标记为已删除或仅挂起在内存中?
答案 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()"
。