【发布时间】:2015-08-20 11:11:31
【问题描述】:
场景:
- 带有两个 TTabSheets 的 TPageControl
- 不可见标签页上的 TWebBrowser
- WebBrowser->在表单创建期间调用导航
如果用户只是运行表单并退出,那么在应用程序关闭期间,会产生访问冲突:
507C1413 美元的第一次机会例外。异常类 $C0000005 带有消息“在 0x507c1413 处的访问冲突:读取地址 0x00000010”。处理 Project1.exe (3464)
调试器中的调用堆栈仅包含一个条目,这表明调用堆栈已损坏:
:507c1413 ; C:\Program Files (x86)\Embarcadero\Studio\16.0\bin\vcl220.bpl
(另一个应用程序将调用堆栈显示为具有 IsFormSizeStored 的单个条目。)
在代码或 UI 中切换到浏览器的标签页可以避免该问题。不调用 Navigate 可以避免这个问题。
在 XE4 和 XE8 中观察到。
解决这个问题的最佳方法是什么?
【问题讨论】:
-
无法在导航到 google.com 的 Delphi XE3 中重现。
-
@TLama - 它在 XE4 中似乎是新的。我不再安装 XE3,但我只是尝试了 XE2,但我无法在那里重现它。
-
您是否尝试将调用
WebBrowser->Navigate移动到其他位置(例如AfterConstruction)以允许首先完全创建表单? -
@KenWhite - 迁移到 FormShow 没有帮助。
-
您是否尝试过在关机时进行清理? (例如导航到 about:blank)
标签: delphi c++builder access-violation twebbrowser