关闭 Windows 窗体时,我可以使用:
this.Close();
Application.Exit();
Environment.Exit(0);
Environment.Exit(1);
Environment.Exit(-1);
这些选项之间有什么区别?为什么我要使用其中一个?
以下是直接来自 MSDN 的描述(以及一些额外的评论):
this/Form.Close (),从Form
实例的上下文中调用。
关闭窗体。
请注意,只有当它是您的应用程序中保持打开的最后一个表单并且没有其他前台线程在运行时,它才会退出应用程序。
应用程序.退出()
通知所有消息泵它们必须终止,然后在处理完消息后关闭所有应用程序窗口。
一种可以从应用程序中的任何位置调用的方法,它将终止前台线程上的所有消息泵。同样,这不会退出没有运行消息循环的其他前台线程,因此不能保证关闭应用程序。
Environment.Exit () 带有可选的退出代码。
终止此进程并为底层操作系统提供指定的退出代码。
这会尝试通过结束其中运行的所有线程来终止进程,然后将退出代码返回给操作系统。例如,这可以用于将失败状态返回到最初生成应用程序的批处理文件。这通常仅在需要强制终止进程时使用,并且如果它必须等待线程结束,则可能不会立即关闭应用程序。
当您调用Application.Run(mainForm)
标准应用程序消息循环开始在当前线程上运行时,将显示指定的形式。此方法还将事件处理程序添加到事件的 mainForm 中Closed
。事件处理程序调用ExitThread
以清理应用程序。ExitThread
退出当前线程上的消息循环并关闭线程上的所有窗口。当您调用Close
主窗体时会发生这种情况。
Application.Exit()
只是为该属性FormClosing
表示的每种形式引发事件。OpenForms
您可以以任何形式取消此活动。在这种情况下,Exit 返回,无需进一步操作。否则,FormClosed
每个打开的表单都会引发一个事件,然后关闭所有正在运行的消息循环和表单。
Environment.Exit
(残酷地)终止进程并为底层操作系统提供指定的退出代码。如果您传递非零代码,这将表明您的应用程序中发生了错误。这是杀死应用程序的最快方法。