当前位置:  开发笔记 > 编程语言 > 正文

C#WebBrowser控制系统.AccessViolationException

如何解决《C#WebBrowser控制系统.AccessViolationException》经验,为你挑选了1个好方法。

我有一个使用内置webbrowser控件的程序.在使用它的某个时刻,我不确定在什么时候,但它似乎是随机的,我得到以下错误:

System.AccessViolationException

FullText = System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)

有没有人有任何线索,为什么我会得到这个以及如何防止它?



1> Filip Navara..:

我们最近在几个客户的机器上遇到了类似的问题.在某些环境中,问题证明是MSHTML控件中的一个错误.该问题的常见症状似乎是jscript.dll库的注册被破坏.

可能有助于诊断是否存在相同问题的症状 - jscript.dll未在调试器中的模块中列出且未被进程加载; 崩溃的本机堆栈跟踪如下:

mshtml!CRootTracker::CollectGarbageInternal+0xd
mshtml!CDoc::ReduceMemoryPressureTask+0x29
mshtml!CStackPtrAry::GetStackSize+0xb6
mshtml!GlobalWndProc+0x183
USER32!InternalCallWinProc+0x23
USER32!UserCallWinProcCheckWow+0x109
USER32!DispatchMessageWorker+0x3bc
USER32!DispatchMessageW+0xf

解决方案是重新注册jscript.dll库,崩溃应该消失.

重新注册库的步骤如下(64位Windows的示例,否则只需要第一行):

C:\Windows\System32\regsvr32.exe C:\Windows\System32\jscript.dll
C:\Windows\SysWOW64\regsvr32.exe C:\Windows\SysWOW64\jscript.dll

两个命令都必须"以管理员身份运行".

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有