Winforms:Application.Exit vs Environment.Exit vs Form.Close
Winforms:Application.Exit vs Environment.Exit vs Form.Close
以下是退出应用程序的几种方法:
Environment.Exit(0)
Application.Exit()
Form.Close()
这三种方法有什么区别,应该在什么情况下使用每种方法?
admin 更改状态以发布 2023年5月22日
正确的方法是使用 Application.Exit()
。根据文档,它会终止所有的消息循环并关闭所有的窗口,从而使你的窗体得以执行其清理代码(例如,在Form.OnClose
等方法中)。
Environment.Exit
只会杀死进程。如果某个窗体有未保存的更改,它将没有任何机会询问用户是否要保存。此外,资源(如数据库连接等)可能无法正确释放,文件可能无法刷新等。
Form.Close
仅仅做了它所说的:关闭一个窗体。如果你有其他窗体打开(也许现在没有,但在你的应用程序的某个未来版本中有可能出现),应用程序将不会终止。
请记住,如果你使用多线程,Application.Exit()
将不会终止你的线程(因此应用程序将继续在后台工作,即使 GUI 被终止了)。因此,你必须采取措施来杀死你的线程,要么在主函数(即 Program.Main()
)中,要么在主窗体的 OnClose
事件中。