当从主程序窗口产生的模式对话框正常关闭时,我的应用程序意外结束时出现问题。不会引发未处理的异常,也不会在主应用程序窗口上触发 Closing
或 Closed
事件。
本质上,我有一个主/ shell 窗口,它在应用程序代码中使用 ShellWindow.Show() 启动。通过菜单,用户可以生成一个自定义打开对话框,这是一个创建的新窗口,然后使用 ShowDialog 显示(窗口所有者设置为 shell 窗口的所有者)。
当对话框关闭时(在内部,通过调用 _modalDialogWindow.Close() 的命令)应用程序关闭,而我只希望模态对话框关闭。
调试代码表明 ShellWindow 已从内存中转储,因为 _modalDialogWindow.Close() 之后的下一个执行代码行是从静态程序代码中的 Application.Run() 中掉出来的。
如果有人有任何想法,我愿意尝试任何事情。
最佳答案
看来,由于我设计的应用程序窗口关闭事件的 MVVM/Ioc 方式传播得比它们应该传播的更远。我不明白这个!
但是,将 Application.ShutDownMode 设置为 Explicit 可以防止应用程序过早关闭,我现在有了所需的行为。
顺便说一句,按照 declyclone 的建议打开所有异常并没有产生任何在窗口关闭时在内部抛出的异常。
关于WPF 模态对话框关闭意外结束应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5076205/