ShowFileDialog1 冻结

ShowFileDialog1 Freezing

好的,我遇到了 OpenFileDialog1 最严重的问题。我有一个程序已经使用了大约 8 个月,在过去的一个月里,该程序在使用 OpenFileDialog1.ShowDialog() 函数时开始随机挂起。我已经阅读了所有其他关于多线程与单线程应用程序的帖子。这并没有解决它。启用 "Show Help" 按钮并没有修复它。我大多不知所措。这是该错误的详尽演练:

  1. 运行 应用程序。我总是可以毫无问题地使用“打开文件”按钮几次。程序 运行ning 一段时间后随机冻结。

  2. 在我按下 ShowDialog 按钮后发生冻结,并且从不显示打开文件对话框 window。整个程序锁定并挂起。如果我暂停它,Visual Studio 不会显示错误。它用绿色强调了 OpenFileDialog1.ShowDialog(),这很奇怪。

  3. 我找到了打破冻结的方法。只需 运行 程序的第二个实例并使用 OpenFileDialog 函数。一旦它在第二个实例中加载文件,第一个实例就会解冻。但是,这不是解决方法。

  4. 我唯一能想到的可能是该程序还使用了 WebBrowser1 控件。它似乎只发生在 WebBrowser 控件之后,它位于一个单独的窗体上,而不是主窗体,已被启动和使用。这有什么意义吗?

感谢任何能帮助我的人。我快要扯头发了。

使用 dnspy 调试您的程序,当软件冻结时,您将能够在 dnspy 中看到实际代码,即使它在第三方 DLL 中也是如此。

我已经解决了这个问题。根据我上面的描述,这是非常无法解决的,但希望我能帮助别人解决这个问题。该错误与在 WebBrowser1 控件中使用 IE11 Emulation Control (11000) 有关。由于某种原因,这会干扰 OpenFileDialog 并导致它挂起。我不知道为什么。我将 WebBrowser1 更改为使用 IE9 Emulation Control (9999),错误消失了。感谢那些调查此事的人。这是 HKEY_CURRENT_USER.

中的注册表项