delphi - 从隐藏的 TWebBrowser 关闭时访问冲突

标签 delphi c++builder access-violation twebbrowser

场景:

  • 带有两个 TTabSheets 的 TPageControl
  • 不可见标签页上的 TWebBrowser
  • WebBrowser->在表单创建期间调用的导航

如果用户只是运行表单并退出,则在应用程序关闭期间,会生成访问冲突:

First chance exception at $507C1413. Exception class $C0000005 with message 'access violation at 0x507c1413: read of address 0x00000010'. Process Project1.exe (3464)

调试器中的调用堆栈仅包含一个条目,这表明调用堆栈已损坏:

:507c1413 ; C:\Program Files (x86)\Embarcadero\Studio\16.0\bin\vcl220.bpl

(另一个应用程序将调用堆栈显示为具有单个 IsFormSizeStored 条目。)

切换到浏览器的选项卡(无论是在代码中还是在 UI 中)都可以避免该问题。不调用 Navigate 可以避免该问题。

在 XE4 和 XE8 中观察到。

解决这个问题的最佳方法是什么?

最佳答案

按照 @TOndrej 的建议,我添加了一个 FormClose 事件处理程序,以便在应用程序关闭之前删除 TWebBrowser 控件。

此问题已记录在RAD Studio Quality Portal上.

关于delphi - 从隐藏的 TWebBrowser 关闭时访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667585/

相关文章:

c++ - 直接调用类操作符

delphi - RAD Studio 调试器引发异常并频繁停止

delphi - 印地 HTTP 客户端 : sessions like in web browser

arrays - 尝试访问数组时不断出现访问冲突

database - 数据集更新过滤器位置

delphi - TWebBrowser-试图修复“无效的浮点运算”错误

delphi - 调试包含字符串的 TValue

c++ - 搜索列表中的最后一个数据实例

c++ - 访问冲突 OpenCV C++ dll

delphi - 如何同步2个TTreeview的滚动?