当用户从文件菜单中单击退出菜单项时,应该如何退出应用程序?

我试过:

this.Dispose();
this.Exit();
Application.ShutDown();
Application.Exit();
Application.Dispose();

还有很多其他的。没有什么工作。


当前回答

这应该可以达到目的:

Application.Current.Shutdown();

如果你感兴趣,这里有一些我认为有用的额外材料:

申请详情。当前的

WPF应用程序生命周期

其他回答

要退出应用程序,您可以调用

System.Windows.Application.Current.Shutdown();

如应用程序文档中所述。你也可以通过指定ShutdownMode来修改应用程序的关机行为:

在以下情况下,Windows Presentation Foundation (WPF)会隐式调用Shutdown: 当ShutdownMode设置为OnLastWindowClose时。 当关机模式设置为OnMainWindowClose时。 当用户结束会话,而SessionEnding事件未被处理或在未取消的情况下被处理时。

请注意Application.Current.Shutdown();只能从创建Application对象的线程调用,即通常是主线程。

根据我的理解,Application.Current.Shutdown()也有它的缺点。

如果你想显示一个确认窗口让用户确认是否退出,Application.Current.Shutdown()是不可逆的。

总结一下,有几种方法可以做到这一点。

1)终止进程,跳过结束、错误处理等:

Process.GetCurrentProcess().Kill();

2)关闭当前应用程序,这可能是正确的方式,因为它调用退出事件:

Application.Current.Shutdown();

or

this.Shutdown();

(当在app类的实例中调用时)

3)关闭当前app(所有表单必须提前关闭/完成):

this.Close(); 

(当在app类的实例中调用时)

4)退出环境,终止应用程序:

Environment.Exit(0);

此外,你可能想在这里阅读退出状态

另一种方法是:

System.Diagnostics.Process.GetCurrentProcess().Kill();

这将强制终止应用程序。它总是有效的,即使在多线程应用程序中也是如此。

注意:注意不要在另一个线程中丢失未保存的数据。

App.Current.Shutdown (); 把它写在你需要的地方。