关闭WPF GUI应用程序的正确方法:GetCurrentProcess().Kill(),Environment.Exit(0)或this.Shutdown()

Mik*_* B. 49 c# database wpf exception-handling close-application

我的基于GUI桌面的WPF 4.0(C#.Net 4.0)程序适用于SQL Server数据库.每次运行我的应用程序时,它都会通过ADO.NET Entity Framework创建与SQL Server的连接,如果SQL Server无法访问,则会抛出异常并显示MessageBox通知.

现在我希望在用户阅读此消息后,应用程序将关闭.我找到了三种方法:

Process.GetCurrentProcess().Kill();
Run Code Online (Sandbox Code Playgroud)

要么

this.Shutdown(); // Application.Current.Shutdown()
Run Code Online (Sandbox Code Playgroud)

要么

System.Environment.Exit(0);
Run Code Online (Sandbox Code Playgroud)

所有这些都可以正常工作并完成我需要的工作 - 在Windows任务管理器中关闭应用程序并终止应用程序的进程.

我想知道:

  1. 他们之间有什么区别?
  2. 哪种方式可以更快地关闭我的申请?
  3. 我应该使用哪种方式关闭应用程序?
  4. Application.Current.Shutdown()this.Shutdown()以同样的方式来关闭应用?

或者可能还有另一种更合适的方法来关闭WPF GUI应用程序?

Application.Exit() 因为我收到错误,对我不起作用:

事件' System.Windows.Application.Exit'只能出现在+ =或 - =的左侧

谢谢.

Dam*_*ash 68

Application.Current.Shutdown()是关闭应用程序的正确方法.通常因为触发退出事件可以处理更多

Process.GetCurrentProcess().Kill()当你想杀死应用程序时应该使用它.更多

AD1.这些方法的性质完全不同.关闭进程可以暂停以结束某些操作,杀死应用程序关闭.

AD2.可能Kill()是最快的方式,但这就像内核恐慌.

AD3.关闭,因为它会触发关闭事件

AD4.这取决于什么this.