Winforms:Application.Exit vs Environment.Exit vs Form.Close

时间:2012-10-24 09:05:04

标签: c# .net vb.net winforms windows-applications

以下是我们退出申请的方式:

  1. Enviroment.Exit(0)
  2. Application.Exit()
  3. Form.Close()
  4. 这三种方法之间的区别是什么?何时使用每种方法?

3 个答案:

答案 0 :(得分:95)

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

Environment.Exit会杀死这个过程。如果某种形式有例如未保存的更改,它没有任何机会询问用户是否要保存它们。此外,无法正确释放资源(数据库连接等),文件可能无法刷新等。

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

请记住,如果使用多线程,Application.Exit()将不会终止您的线程(因此即使GUI终止,应用程序也会在后台继续工作)。因此,您必须采取措施在主函数(即Program.Main())或主表单的OnClose事件中杀死您的主题。

答案 1 :(得分:4)

他们都很好。 但form.Close()不会关闭您的申请 它关闭了表格,之后 main方法返回一个int(exitcode)。

如果您希望您的应用程序退出并使用exitcodes Environmet.Exit(exitcode)或者在main方法中返回exitcode

答案 2 :(得分:-2)

Dim forceExitTimer = New Threading.Timer(Sub() End, Nothing, 2500, Timeout.Infinite)
Application.Exit()

此方法非常完美,允许软件在调用残酷的End命令(强制使用该软件将其关闭)之前使用application.exit轻轻关闭