导致WPF应用程序关闭的原因

时间:2017-12-04 18:42:34

标签: c# wpf

我遇到了一个奇怪的错误,在第一个窗口关闭后,WPF应用程序正在关闭。这让我很好奇是什么触发它关闭

例如,这就是我的工作版本。在EULAWindow关闭之后,它将关闭应用程序。

EULAWindow eula = new EULAWindow();
eula.ShowDialog();
MainMenuWindow mainWindow = new MainMenuWindow();
mainWindow.ShowDialog();

我以为它会打开EULA,然后打开菜单窗口。我发现,如果我重新安排代码,它将按预期运行。

例如,这将解决它:

EULAWindow eula = new EULAWindow();
MainMenuWindow mainWindow = new MainMenuWindow();
eula.ShowDialog();
mainWindow.ShowDialog();

这让我想到了在第一种情况下导致应用程序关闭的实际原因是什么?

2 个答案:

答案 0 :(得分:3)

ShowDialog()是一个阻止调用。因此,在第一种情况下,您有单个窗口,然后显示它,然后让用户关闭它。一旦最后一个UI窗口关闭,应用程序应该做什么?也许,按照应用程序关闭代码?我怀疑是这样。

在第二种情况下,在ShowDialog()内部阻塞之前创建两个窗口。因此,一旦你关闭了第一个窗口,就会有另一个窗口可以容纳用户,而应用程序没有关闭,它只是等待下一个窗口显示。

答案 1 :(得分:0)

由于我使用Application Startup来创建我的窗口,因此默认将 EULAWindow 设置为 Current.MainWindow 然后保持 Current.ShutDownMode as ShutdownMode.OnMainWindowClose

当您创建两个窗口时,在调用Show或ShowDialog之前,它会自动将关闭模式更改为 ShutdownMode.OnLastWindowClose

我不确定这种情况发生的方式或地点,但我可以说这是进一步调查后发生的行为。