由于主 window 实例不可见,WPF 应用程序未关闭
WPF app doesn't shut down because of invisible main window instance
我的 WPF 应用程序发生了一些神秘的事情。我更改了 main window 并且在关闭它后应用程序没有关闭。这是我的 App.xaml:
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:LogAnalysis" x:Class="LogAnalysis.App"
StartupUri="ChartWindow.xaml" ShutdownMode="OnMainWindowClose">
<Application.MainWindow>
<local:ChartWindow/>
</Application.MainWindow>
</Application>
我试图弄清楚为什么进程在关闭后仍然存在并写下了这个:
foreach (var window in Application.Current.Windows)
{
MessageBox.Show((window as Window).Title);
}
显示了两个包含相同消息的消息框。
因此,似乎有两个 main window 实例在一个 app.
实例中是 运行
我不能使用解决方案:
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
Application.Current.Shutdown();
}
因为 Window.Closing
事件因 window 的第二个实例而被触发两次(并且它破坏了用户设置)。
这并不是您问题的确切答案,因为我无法知道为什么有两个 MainWindow 实例,但您可以将用户设置的保存移动到 Application.ApplicationExit
(WinForms)或 Application.Current.Exit
(WPF) 方法,在调用 Shutdown()
.
后只会调用一次
哦,终于明白了。在 App.xaml 文件中,无需确定 Main Window 属性 显式。所以,这段代码不仅多余,还调用了window构造函数:
<Application.MainWindow>
<local:ChartWindow/>
</Application.MainWindow>
只改StartupUri
属性.
就够了
希望对大家有所帮助。
我的 WPF 应用程序发生了一些神秘的事情。我更改了 main window 并且在关闭它后应用程序没有关闭。这是我的 App.xaml:
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:LogAnalysis" x:Class="LogAnalysis.App"
StartupUri="ChartWindow.xaml" ShutdownMode="OnMainWindowClose">
<Application.MainWindow>
<local:ChartWindow/>
</Application.MainWindow>
</Application>
我试图弄清楚为什么进程在关闭后仍然存在并写下了这个:
foreach (var window in Application.Current.Windows)
{
MessageBox.Show((window as Window).Title);
}
显示了两个包含相同消息的消息框。 因此,似乎有两个 main window 实例在一个 app.
实例中是 运行我不能使用解决方案:
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
Application.Current.Shutdown();
}
因为 Window.Closing
事件因 window 的第二个实例而被触发两次(并且它破坏了用户设置)。
这并不是您问题的确切答案,因为我无法知道为什么有两个 MainWindow 实例,但您可以将用户设置的保存移动到 Application.ApplicationExit
(WinForms)或 Application.Current.Exit
(WPF) 方法,在调用 Shutdown()
.
哦,终于明白了。在 App.xaml 文件中,无需确定 Main Window 属性 显式。所以,这段代码不仅多余,还调用了window构造函数:
<Application.MainWindow>
<local:ChartWindow/>
</Application.MainWindow>
只改StartupUri
属性.
希望对大家有所帮助。