从App.xaml.cs关闭WPF应用程序
-
03-07-2019 - |
题
我目前正在编写一个WPF应用程序,它在App.xaml.cs中执行命令行参数处理(这是必要的,因为Startup事件似乎是获取这些参数的推荐方法)。根据我想要退出程序的参数,据我所知,应该在WPF中用 Application.Current.Shutdown()
完成,或者在这种情况下(就像我一样)在当前的应用程序对象中)可能只是 this.Shutdown()
。
唯一的问题是这似乎不正常。在 Shutdown()
行仍然执行后,我已经逐步调试了调试器和代码,这导致了方法之后的错误,因为我预计应用程序不能存活那么长时间。
我已经检查了该方法的文档,并且在备注中没有发现任何内容告诉我在 Application.Startup
或 Application
期间我不应该使用它
那么,在那时退出该计划的正确方法是什么,我。  e。 Application
对象中的 Startup
事件处理程序?
解决方案
首先从App.xaml中删除StartupUri属性,然后使用以下命令:
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
bool doShutDown = ...;
if (doShutDown)
{
Shutdown(1);
return;
}
else
{
this.StartupUri = new Uri("Window1.xaml", UriKind.Relative);
}
}
其他提示
如果从app.xaml中删除具有MainWindow的应用程序的StartupUri,则需要确保在OnStartup方法中进行以下调用,否则当MainWindow关闭时应用程序将不会终止。
this.ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose;
@Frank Schwieterman,这些内容可以帮助您解决控制台窗口问题。
不隶属于 StackOverflow