的WinForms:Application.Exit VS Enviroment.Exit VS F

2019-06-18 15:03发布

以下是通过我们可以退出应用程序的方法:

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

什么是这三种方法,以及何时使用每个人之间的区别?

Answer 1:

适当的方法将被Application.Exit() 根据该文件 ,它会终止所有的消息循环,并关闭从而使您的形式执行其清理代码(在Form.OnClose等)的可能性的所有窗口。

Environment.Exit只想杀死进程。 如果某种形式的具有例如未保存的更改将不会有任何机会,如果他要救他们询问用户。 另外资源(数据库连接等),无法正确释放,文件可能不被刷新等。

Form.Close少了点什么,它说:它关闭的形式。 如果您有其他形式开口(也许不是现在,但在未来的某个版本的应用程序),应用程序将不会终止。

请记住,如果你使用多线程, Application.Exit()将不会终止你的线程(因此该应用程序将继续在后台运行,即使GUI被终止)。 因此,你必须采取措施来杀死你的线程,无论是在主要功能(即Program.Main()或在时OnClose主窗体的事件。



Answer 2:

他们无一不精。 但form.Close()不会关闭你的应用程序关闭窗体并在此之后,主方法返回一个int(退出码)。

如果您希望您的应用程序退出时exitcodes使用Environmet.Exit(exitcode) ,或在主方法返回的退出码



Answer 3:

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

这种方法是完美的,允许软件调用残酷结束命令,将被强行关闭软件之前与application.exit轻轻关闭



文章来源: Winforms: Application.Exit vs Enviroment.Exit vs Form.Close