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

24 浏览
0 Comments

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

以下是退出应用程序的几种方法:

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

这三种方法有什么区别,应该在什么情况下使用每种方法?

admin 更改状态以发布 2023年5月22日
0
0 Comments

他们都很好。

但是form.Close()不会关闭应用程序,它只会关闭窗体。然后主方法会返回一个整数(exitcode)。

如果你想要应用程序退出时有exitcode,请使用Environmet.Exit(exitcode)或在主方法中返回exitcode。

0
0 Comments

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

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

Form.Close 仅仅做了它所说的:关闭一个窗体。如果你有其他窗体打开(也许现在没有,但在你的应用程序的某个未来版本中有可能出现),应用程序将不会终止。

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

0