当用户从文件菜单中单击退出菜单项时,应该如何退出应用程序?
我试过:
this.Dispose();
this.Exit();
Application.ShutDown();
Application.Exit();
Application.Dispose();
还有很多其他的。没有什么工作。
当用户从文件菜单中单击退出菜单项时,应该如何退出应用程序?
我试过:
this.Dispose();
this.Exit();
Application.ShutDown();
Application.Exit();
Application.Dispose();
还有很多其他的。没有什么工作。
当前回答
如果你真的需要它来关闭,你也可以使用Environment.Exit(),但这一点都不优雅(更像是结束进程)。
使用方法如下:
Environment.Exit(0)
其他回答
Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
这应该可以达到目的:
Application.Current.Shutdown();
如果你感兴趣,这里有一些我认为有用的额外材料:
申请详情。当前的
WPF应用程序生命周期
总结一下,有几种方法可以做到这一点。
1)终止进程,跳过结束、错误处理等:
Process.GetCurrentProcess().Kill();
2)关闭当前应用程序,这可能是正确的方式,因为它调用退出事件:
Application.Current.Shutdown();
or
this.Shutdown();
(当在app类的实例中调用时)
3)关闭当前app(所有表单必须提前关闭/完成):
this.Close();
(当在app类的实例中调用时)
4)退出环境,终止应用程序:
Environment.Exit(0);
此外,你可能想在这里阅读退出状态
要退出应用程序,您可以调用
System.Windows.Application.Current.Shutdown();
如应用程序文档中所述。你也可以通过指定ShutdownMode来修改应用程序的关机行为:
在以下情况下,Windows Presentation Foundation (WPF)会隐式调用Shutdown: 当ShutdownMode设置为OnLastWindowClose时。 当关机模式设置为OnMainWindowClose时。 当用户结束会话,而SessionEnding事件未被处理或在未取消的情况下被处理时。
请注意Application.Current.Shutdown();只能从创建Application对象的线程调用,即通常是主线程。
Caliburn微调味
public class CloseAppResult : CancelResult
{
public override void Execute(CoroutineExecutionContext context)
{
Application.Current.Shutdown();
base.Execute(context);
}
}
public class CancelResult : Result
{
public override void Execute(CoroutineExecutionContext context)
{
OnCompleted(this, new ResultCompletionEventArgs { WasCancelled = true });
}
}