C# 窗口类销毁
我创建的窗口如下所示:C# 窗口类销毁,c#,wpf,window,destructor,C#,Wpf,Window,Destructor,我创建的窗口如下所示: if (someCondition) { MyWindow wnd = new MyWindow(); wnd.Owner = this; wnd.ShowDialog(); } 我希望MyWindow的析构函数在最后的花括号中被调用,但它没有。要调用MyWindow的析构函数,是否需要调用delete/destroy之类的函数 using (MyWindow wnd = new MyWindow()) { wnd.Ow
if (someCondition)
{
MyWindow wnd = new MyWindow();
wnd.Owner = this;
wnd.ShowDialog();
}
我希望MyWindow的析构函数在最后的花括号中被调用,但它没有。要调用MyWindow的析构函数,是否需要调用delete/destroy之类的函数
using (MyWindow wnd = new MyWindow())
{
wnd.Owner = this;
wnd.ShowDialog();
}
这将在花括号后的窗口上调用Dispose
,我认为您正在寻找花括号。您的MyWindow
类将需要实现IDisposable
这将在花括号后的窗口上调用
Dispose
,我认为您正在寻找花括号。你的MyWindow
类需要实现IDisposable
一件小事,你打开窗口,然后想调用它的析构函数。这真的没有道理。您应该关闭窗口,然后隐式调用它的析构函数
如果要显式调用它,应该在MyWindow类中重写Dispose。在那里,您可以清除任何要显式处理的资源。一件小事,您打开窗口,然后想要调用它的析构函数。这真的没有道理。您应该关闭窗口,然后隐式调用它的析构函数 如果要显式调用它,应该在MyWindow类中重写Dispose。在那里,您可以清除任何要显式处理的资源。只要垃圾收集器愿意,就会调用“析构函数”或C#中的“析构函数”。您可以使用手动触发垃圾收集器,但是。另一方面,如果您正在谈论Dispose(),则可以通过在“using”子句中创建窗口来调用它: 这将使wnd.Dispose()在using子句完成时被调用,基本上与写入相同:
var wnd = new MyWindow();
wnd.Owner = this;
wnd.ShowDialog();
wnd.Dispose();
关于接口的使用可能会有所帮助-并且 只要垃圾收集器愿意,就会调用“析构函数”或在C#中调用的“析构函数”。您可以使用手动触发垃圾收集器,但是。另一方面,如果您正在谈论Dispose(),则可以通过在“using”子句中创建窗口来调用它:
这将使wnd.Dispose()在using子句完成时被调用,基本上与写入相同:
var wnd = new MyWindow();
wnd.Owner = this;
wnd.ShowDialog();
wnd.Dispose();
关于接口的使用可能会有所帮助-并且 你为什么要调用析构函数?如果您正在进行简单的清理工作,请让MyWindow实现IDisposable并在Dispose方法中进行清理。我不认为使用析构函数是个好主意。你为什么需要调用析构函数?如果您正在进行简单的清理工作,请让MyWindow实现IDisposable并在Dispose方法中进行清理。我不认为使用析构函数是个好主意。不要过于迂腐,但类已经实现了
IDisposable
;它需要做的是重写Dispose
。(它不包含任何非托管资源。)Charlie是的,IDisposable需要在MyWindow派生类上实现。不要过于迂腐,但该类已经实现了IDisposable
;它需要做的是重写Dispose
。(它不包含任何非托管资源。)Charlie是的,IDisposable需要在MyWindow派生类上实现。ShowDialog
在窗口关闭之前不会返回-所以我不理解您的答案?所以如果“ShowDialog”在对话框关闭之前不会返回,如果对话框仍然没有被破坏,如何调用析构函数?这就是我想说的重点。ShowDialog
在窗口关闭之前不会返回-所以我不理解你的答案?那么如果对话框关闭之前“ShowDialog”不会返回,如果对话框仍然没有被破坏,你怎么能调用析构函数呢?这就是我想说的重点。