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

标签 c# wpf database 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();

this.Shutdown(); // Application.Current.Shutdown()

System.Environment.Exit(0);

所有这些都工作正常并且可以满足我的需要——关闭应用程序并在 Windows 任务管理器中终止应用程序的进程。

我想知道:

  1. 它们有什么区别?
  2. 哪种方式可以更快地关闭我的应用程序?
  3. 我应该使用哪种方式关闭应用程序?
  4. Application.Current.Shutdown()this.Shutdown() 关闭应用的方式一样吗?

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

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

The event 'System.Windows.Application.Exit' can only appear on the left-hand side of += or -=

谢谢。

最佳答案

Application.Current.Shutdown() 是关闭应用程序的正确方法。通常,因为它会触发退出事件,您可以处理,further info .

Process.GetCurrentProcess().Kill() 应该在您想要尽快终止应用程序时使用,further info .

这些方法的性质完全不同:

  • Shutdown() 可以暂停以结束一些操作
  • Kill() 强制应用程序尽快关闭

Kill() 可能是最快的方法,但这有点像内核 panic 。

关于c# - 关闭 WPF GUI 应用程序的正确方法 : GetCurrentProcess(). Kill()、Environment.Exit(0) 或 this.Shutdown(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3880836/

相关文章:

c# - ASP.NET 生产服务器 PDB 文件

wpf - 这个 DataGridComboBoxColumn 绑定(bind)语法有什么问题?

android - 如何获取自定义 ListView 的选定行的子行的 rowID?

mysql - 备份 MySQL 用户

database - 在 ORM 中, "lazy loading"是否意味着您可能无法从较大的列中获得预期的结果?

c# - 如何获取简单字符串变量的最后一行 - C#

c# - LINQ 包含 2 个列表

C# 枚举和转换

c# - 将空项目添加到有界组合框

c# - 按下按钮上的选项卡时更改按钮上的焦点颜色