73

以下是我们可以退出应用程序的方式:

  1. Environment.Exit(0)
  2. Application.Exit()
  3. Form.Close()

这三种方法有什么区别以及何时使用每种方法?

4

3 回答 3

120

正确的方法是Application.Exit(). 根据文档,它终止所有消息循环并关闭所有窗口,从而使您的表单可以执行其清理代码(在 Form.OnClose 等中)。

Environment.Exit只会杀死进程。如果某些表单具有例如未保存的更改,它将没有机会询问用户是否要保存它们。资源(数据库连接等)也无法正确释放,文件可能无法刷新等。

Form.Close只做它所说的:它关闭一个表单。如果您打开了其他表单(可能不是现在,而是在您的应用程序的某个未来版本中),应用程序将不会终止。

请记住,如果您使用多线程,Application.Exit()则不会终止您的线程(因此应用程序将继续在后台工作,即使 GUI 已终止)。因此,您必须采取措施来杀死您的线程,无论是在主函数(即Program.Main())中还是在OnClose您的主窗体事件中。

于 2012-10-24T09:08:43.997 回答
4

他们都很好。但form.Close()不会关闭您的应用程序,它会关闭表单,然后主方法返回一个 int(退出代码)。

如果您希望您的应用程序以 exitcodes 退出,请使用 Environmet.Exit(exitcode)或返回 main-method 中的 exitcode

于 2012-10-24T09:12:39.590 回答
-5
Dim forceExitTimer = New Threading.Timer(Sub() End, Nothing, 2500, Timeout.Infinite)
Application.Exit()

这个方法很完美,让软件先用 application.exit 轻轻关闭,然后再调用暴力的 End 命令强制关闭软件

于 2018-10-05T16:39:27.797 回答