我创建了一个窗口,像这样:WPF窗口类销毁
if (someCondition)
{
MyWindow wnd = new MyWindow();
wnd.Owner = this;
wnd.ShowDialog();
}
我想为mywindow的析构函数在结束的方括号中调用,但事实并非如此。我是否需要为MyWindow的析构函数调用类似delete/destroy的东西来调用?
我创建了一个窗口,像这样:WPF窗口类销毁
if (someCondition)
{
MyWindow wnd = new MyWindow();
wnd.Owner = this;
wnd.ShowDialog();
}
我想为mywindow的析构函数在结束的方括号中调用,但事实并非如此。我是否需要为MyWindow的析构函数调用类似delete/destroy的东西来调用?
的“析构函数”或finalizer因为它是所谓在C#中,每当垃圾收集感觉就像被调用。您可以使用System.GC.Collect()而不是you probably don't want to do this手动触发垃圾收集器。如果你谈论的Dispose(),另一方面可以让这个被称为通过在“使用”的条款创建窗口:
using (var wnd = new MyWindow())
{
wnd.Owner = this;
wnd.ShowDialog();
}
这将使wnd.Dispose()时所使用的子句是被称为完了,就基本上是相同的文字:
var wnd = new MyWindow();
wnd.Owner = this;
wnd.ShowDialog();
wnd.Dispose();
关于IDisposable界面的使用this question可能是有益的 - 和several more on StackOverflow。
using (MyWindow wnd = new MyWindow())
{
wnd.Owner = this;
wnd.ShowDialog();
}
这将花括号,这是我认为你正在寻找后打电话Dispose
你的窗口上。你的MyWindow
课程将需要实施IDisposable
。
一个小东西,你打开的窗口,然后想调用它的析构函数。这没有什么意义。你应该关闭窗口,然后它的析构函数将被隐式调用。
如果你想叫它明确,你应该在你的mywindow的类中重写处置。在那里你可以清理任何你想明确处理的资源。
ShowDialog'不会返回,直到Windows关闭 - 所以我不明白你的答案? – 2010-02-17 20:20:12
所以如果'ShowDialog'在对话框关闭前没有返回,如果对话框仍然没有被销毁,那么如何调用析构函数?这就是我想要做的。 – 2010-02-17 21:15:14
为什么你需要调用析构函数?如果您正在进行简单的清理工作,请让MyWindow实现IDisposable并在Dispose方法中执行清理。我不相信使用析构函数是个好主意。 – Charlie 2010-02-17 19:10:42