我创建了一个这样的窗口:
if (someCondition)
{
MyWindow wnd = new MyWindow();
wnd.Owner = this;
wnd.ShowDialog();
}
我希望在右花括号处调用 MyWindow 的析构函数,但它没有。我是否需要调用删除/销毁之类的东西才能调用 MyWindow 的析构函数?
最佳答案
“析构函数”或 finalizer正如在 C# 中调用的那样,只要垃圾收集器感觉合适,就会调用它。您可以使用 System.GC.Collect() 手动触发垃圾收集器, 但是 you probably don't want to do this .另一方面,如果您谈论的是 Dispose(),则可以通过在“using”子句中创建窗口来调用它:
using (var wnd = new MyWindow())
{
wnd.Owner = this;
wnd.ShowDialog();
}
这将使 wnd.Dispose() 在 using 子句完成时被调用,并且基本上与编写相同:
var wnd = new MyWindow();
wnd.Owner = this;
wnd.ShowDialog();
wnd.Dispose();
关于 IDisposable 的使用界面 this question可能会有帮助 - 和 several more on StackOverflow .
关于c# - WPF窗口类销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2283557/