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

Delphi 从隐藏的TWebBrowser关闭时的访问冲突,delphi,c++builder,access-violation,twebbrowser,Delphi,C++builder,Access Violation,Twebbrowser,情景: 带有两张TTabsheet的TPageControl 不可见选项卡工作表上的TWebBrowser WebBrowser->在表单创建过程中调用导航 如果用户只是运行表单并退出,则在应用程序关闭期间,将生成访问冲突: 第一次机会例外价格为507C1413美元。异常类$C0000005,消息为“0x507c1413处的访问冲突:读取地址0x00000010”。Process Project1.exe(3464) 调试器中的调用堆栈仅包含一个条目,这表明调用堆栈已损坏: :507c141

情景:

  • 带有两张TTabsheet的TPageControl
  • 不可见选项卡工作表上的TWebBrowser
  • WebBrowser->在表单创建过程中调用导航
如果用户只是运行表单并退出,则在应用程序关闭期间,将生成访问冲突:

第一次机会例外价格为507C1413美元。异常类$C0000005,消息为“0x507c1413处的访问冲突:读取地址0x00000010”。Process Project1.exe(3464)

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

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

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

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

在XE4和XE8中观察到


修复此问题的最佳方法是什么?

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


此问题已登录到。

无法在Delphi XE3中复制,请导航到google.com。@TLama-它在XE4中似乎是新的。我不再安装XE3,但我只是尝试了XE2,无法在那里复制。您是否尝试将调用移动到
WebBrowser->Navigate
(例如
AfterConstruction
)的其他位置,以允许首先完全创建表单?@KenWhite-移动到FormShow没有帮助。您是否尝试在关闭时进行清理?(例如,导航到“关于:空白”)