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

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

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

这三种方法有什么区别,什么时候使用每种方法?

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

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

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

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

他们都很好。 但form.Close()不会closures你的应用程序,它会closures表单,然后main方法返回一个int(exitcode)。

如果您希望您的应用程序退出并使用退出代码,请使用Environmet.Exit(exitcode)或返回主方法中的退出代码