Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 窗口类销毁_C#_Wpf_Window_Destructor - Fatal编程技术网

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”不会返回,如果对话框仍然没有被破坏,你怎么能调用析构函数呢?这就是我想说的重点。