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

Par*_*ram 57 .net c# vb.net windows winforms

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

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

这三种方法之间的区别是什么?何时使用每种方法?

Mar*_*ner 102

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

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

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

请记住,如果使用多线程,Application.Exit()则不会终止线程(因此即使GUI终止,应用程序也会在后台继续工作).因此,您必须采取措施来杀死主要功能(即Program.Main())或OnClose主表单时的线程.

  • 您可以在线程上设置IsBackground属性,以便它们不会阻止进程终止. (3认同)
  • @EsbenSkovPedersen但可能有操作系统不知道的内部缓存(在应用程序,.Net框架,第三方库等) (2认同)