好吧,我遇到了OpenFileDialog1最严重的问题。我有一个程序,我已经使用了大约8个月,在过去的一个月,该程序已经开始随机挂起使用OpenFileDialog1.ShowDialog()函数。我已经阅读了有关多线程和单线程应用程序的所有其他帖子。这没有解决它。启用“显示帮助”按钮无法解决问题。我大多不知所措。这是对错误的彻底演练:
运行该应用程序。我可以随时使用“打开文件”按钮几次,没有任何问题。程序运行一段时间后,它会随机冻结。
按下ShowDialog按钮后发生冻结,从不显示“打开文件对话框”窗口。整个程序锁定并挂起。如果我暂停它,Visual Studio不会显示错误。它以绿色突出显示OpenFileDialog1.ShowDialog(),这很奇怪。
我找到了打破冻结的方法。只需运行程序的第二个实例并使用OpenFileDialog函数。只要它在第二个实例中加载文件,第一个实例就会解冻。但是,这不是解决方法。
我能想到的唯一可能是导致这种情况的是程序还使用WebBrowser1控件。它似乎只发生在WebBrowser控件之后,它是一个单独的形式,而不是主要形式,已经启动和使用。这有什么意义吗?
感谢任何可以帮助我的人。我快要把头发撕掉了。
答案 0 :(得分:1)
使用dnspy调试程序,当软件冻结时,即使它位于第三方DLL中,您也可以在dnspy中查看实际代码。
答案 1 :(得分:0)
我已经解决了这个问题。根据我上面的描述,这是非常不可解决的,但希望我会帮助有这个解决方案的人。该错误与在WebBrowser1控件中使用IE11仿真控件(11000)有关。由于某种原因,这会干扰OpenFileDialog并导致它挂起。我不知道为什么。我改变了我的WebBrowser1以使用IE9仿真控制(9999),错误消失了。谢谢那些研究过这个问题的人。这是HKEY_CURRENT_USER中的注册表项。