OpenFileDialog 在 Windows XP 下崩溃,但在 Windows 7 下不崩溃
Posted
技术标签:
【中文标题】OpenFileDialog 在 Windows XP 下崩溃,但在 Windows 7 下不崩溃【英文标题】:OpenFileDialog crashes under Windows XP, but not Windows 7 【发布时间】:2011-08-05 18:28:12 【问题描述】:我遇到了一个从未见过的奇怪问题。我可以在 Windows 7 中打开OpenFileDialog
没有任何问题。但是,当我在 Windows XP 上尝试我的应用程序时,调用 OpenFileDialog.ShowDialog()
会立即使应用程序崩溃。它只是消失了!从调试器运行时,我没有收到任何未处理的异常。如果我将代码包装在 try/catch 块中,则不会捕获任何内容。我还在 Debug -> Exceptions 中检查了所有抛出的异常,但没有弹出任何内容。我会在下面的答案中尝试其他一些建议,然后再报告。
有谁知道如何解决这个问题?我找到了post about something similar,但这是相反的问题。我会尝试调整桌面设置,看看是否与此相关,但我很怀疑。
编辑——作为健全性检查,我编写了一个测试 WPF 应用程序,它直接通过主窗口显示 OpenFileDialog
以及另一个可以由主窗口显示的 Window
。它在 Windows XP 下完全可以正常工作。所以现在我真的很困惑。我已经证实我没有做一些愚蠢的事情,比如试图从工作线程中显示对话框。 OpenFileDialog
会短暂显示,然后随应用程序一起消失。
编辑——我将尝试在另一台 XP 计算机上重现此问题。现在,我将尝试 Windows XP 模式,看看会发生什么。
【问题讨论】:
将我自己的问题标记为***.com/questions/3550030/…的可能重复项 也许毕竟不是重复的。我检查了 XP 计算机,它安装了几乎所有的 .NET Framework 版本。 【参考方案1】:当我打开 OpenFileDialog 时 DLL 崩溃时,我遇到了类似的错误。原来 OpenFileDialog 改变了工作目录,所以我的 dll 试图写入一个不存在的相对文件。
【讨论】:
【参考方案2】:您是否在输出中看到任何“第一次机会”异常?事件日志中有任何条目吗? XP 机器上是否存在您使用的默认路径?
尝试将处理程序添加到应用程序域的UnhandledException
当您使用未经任何调整的全新库存FileOpenDialog
时,是否也会发生同样的情况?如果一个全新的应用程序只显示一个文件打开对话框,那又如何呢?
【讨论】:
啊,我看看默认路径——好建议! 验证它存在——仍然崩溃。 一个全新的winforms应用怎么样?对话从那里工作吗?然后我们可以识别应用程序问题/环境问题 我刚刚添加了更多细节来做我原来的问题。我创建了一个新的 WPF 应用程序,它工作正常。所以现在的问题是,为什么我的真实应用程序可以在 Win7 而不是 XP 上运行?非常非常莫名其妙的问题…… 下一步缩小范围,尝试在您的应用中打开一个对话框,使用所有默认设置(无自定义)。假设失败,请考虑打开 .Net 框架调试 - 您还需要为 .Net 框架启用符号下载 - 全部在设置调试 IIRC 中。这将允许您进入框架代码并尝试调试问题。顺便说一句,您是使用反射还是 IoC 容器来创建混凝土?【参考方案3】:见Galet's post
我无法告诉您到底是什么问题,但您可以通过以下方式了解到底发生了什么。我假设您使用的是 VS2008 或 2005。
1.切换到释放模式 2.转到 Debug\Exceptions,并标记所有“抛出”异常,如下所示:http://vvcap.net/db/JbWS_tzy2IpBoI7R7amm.htp 3.在调试器中运行可执行文件,忽略来自VS的警告,即没有调试信息 似乎在执行过程中的某个时间抛出了一个 win32 异常,但是这样或那样,您会从调试器中收到一条或多条消息,解释发生了什么类型的异常以及发生在哪里。在大多数情况下,这些消息可以很清楚到底出了什么问题
编辑:我忘记提到的一件事是非托管调试也必须打开,例如此处(当您直接从 IDE 启动程序时)或此处(当您附加到正在运行的进程时) link|edit|flag 于 2009 年 4 月 12 日 22:32 编辑
于 2009 年 4 月 10 日 19:01 回答 加莱特 1,2201924
【讨论】:
我应该在我的帖子中提到它,但我确实标记了所有抛出的异常——没有弹出任何东西。我在 VS2010 中,我编辑了我的标签以反映这一点。 我启用了非托管调试,并检查了 Throw 列中的所有内容。它仍然在消失,没有任何信息。以上是关于OpenFileDialog 在 Windows XP 下崩溃,但在 Windows 7 下不崩溃的主要内容,如果未能解决你的问题,请参考以下文章