【发布时间】:2014-06-16 22:39:05
【问题描述】:
当我关闭最后一个窗口时,我的应用程序中出现未处理的异常:
“System.NullReferenceException”类型的未处理异常 发生在 PresentationFramework.dll 中
附加信息:对象引用未设置为 对象。
仅当我在应用程序的生命周期内通过我设置的某个进程打开子窗口时才会发生这种情况。该窗口存在于另一个程序集中,该程序集在运行时使用 MEF 动态加载,然后使用 Castle 进行实例化。如果我随后调用某个方法,它会创建一个新的 STA 线程并打开一个 WPF 对话框窗口。
一些注意事项:
- 这只发生在某些机器/环境上(虽然我无法辨别模式)
- 我在应用程序的调度程序上有一个 UnhandledException 处理程序,它捕获所有未处理的异常。这不会被那个抓住。
调用栈是:
PresentationFramework.dll!MS.Internal.Controls.ConnectionPointCookie.Disconnect()
PresentationFramework.dll!MS.Internal.Controls.ConnectionPointCookie.Finalize()
以前有人见过吗,或者有人知道如何调试吗?奇怪的是没有调用堆栈,而且它在程序退出时发生。
【问题讨论】:
-
我认为您需要编辑此问题以将 ShutdownMode 包含在您的 app.xaml 文件中。
-
ShutdownMode属性设置为OnMainWindowClose,但是在启动过程中有几个可以触发的对话框,所以在App启动过程中暂时切换为OnExplicitShutdown,但它是总是在主窗口打开之前切换回OnMainWindowClose。 -
我不知道是什么导致了异常,但我会尝试通过从另一个重定向 Stderr/Stdio 流和希望的应用程序启动它来调试它(绝对 hope ) 在这些流中存在提供线索的人工制品。
-
Visual Studio 已经这样做了(通过“输出”窗口),除了已经提到的内容之外没有任何意义。
-
嗯,不,实际上控制台错误流没有显示在 vs 输出窗口中。因此,我建议它可能值得检查任何人工制品。