我是C#的新手,我试着查看之前的帖子,但没有找到一个好的答案.
在单个表单的C#Windows窗体应用程序中,使用Form.Close()更好还是Form.Dispose()?
MSDN表示关闭对象中的所有资源,并在调用Close时处理该表单.尽管如此,我在网上遇到了几个跟随Dispose而不是Close的例子.
一个人比另一个人有优势吗?在哪种情况下,我们应该优先选择其中一种?
Kyr*_*yra 156
MSDN上的这个论坛告诉你.
Form.Close()发送正确的Windows消息以关闭win32窗口.在此过程中,如果表单未以模态方式显示,则在表单上调用Dispose.处理表单会释放表单所持有的非托管资源.如果你做一个
form1.Show()或Application.Run(new Form1()),调用时Close()会调用Dispose .但是,如果您
form1.ShowDialog()要以模式方式显示表单,则表单将不会被处理,您需要form1.Dispose()自己调用.我相信这是你唯一一次担心自己处理表格.
Jes*_*ire 14
作为一般规则,我总是主张通过直接调用方法或包装在"using"块中为任何提供它的类显式调用Dispose方法.
大多数情况下,实现IDisposible的类是这样做的,因为它们包装了一些需要释放的非托管资源.虽然这些类应该具有作为安全措施的终结器,但调用Dispose将有助于更早地释放内存并降低开销.
对于Form对象,作为Kyra指出的链接,记录了Close方法以代表您调用Dispose,因此您无需明确地这样做.然而,对我来说,这总是感觉像依赖于实施细节.我更喜欢总是为实现它们的类调用Close和Dispose,以防止实现更改/错误并且为了清楚起见.正确实现的Dispose方法应该可以安全地多次调用.
不调用Close可能绕过发送一串哪一个会想到的,虽然我不能具体告诉你为什么有些重要的Win32消息...
Close具有提高活动的好处(可以取消),使得局外人(窗体)可以观看FormClosing,并FormClosed以相应的反应.
我不清楚是否FormClosing和/或FormClosed如果你只是处理的形式,但我把它留给你做实验的提高.