Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 安装IE9后,使用WebBrowser控件的应用程序崩溃_C#_.net_Winforms_Webbrowser Control_Internet Explorer 9 - Fatal编程技术网

C# 安装IE9后,使用WebBrowser控件的应用程序崩溃

C# 安装IE9后,使用WebBrowser控件的应用程序崩溃,c#,.net,winforms,webbrowser-control,internet-explorer-9,C#,.net,Winforms,Webbrowser Control,Internet Explorer 9,我上周安装了IE9,从那以后,我的c#.net应用程序崩溃了20%左右。调试器除了在Program.cs Application.Run(new MyMainForm());,上停止之外,无法显示其他有用的内容,顺便说一句,主窗体已经显示出来了,所以它不是在主窗体上构建的东西 我有Windows7 The exception thrown is: "An unhandled exception of type 'System.ArgumentException' occurred in Syst

我上周安装了IE9,从那以后,我的c#.net应用程序崩溃了20%左右。调试器除了在Program.cs Application.Run(new MyMainForm());,上停止之外,无法显示其他有用的内容,顺便说一句,主窗体已经显示出来了,所以它不是在主窗体上构建的东西

我有Windows7

The exception thrown is:
"An unhandled exception of type 'System.ArgumentException' occurred in System.Windows.Forms.dll

Additional information: Value does not fall within the expected range.
callstack的屏幕截图->

在调试器外部运行时,将显示以下信息:

Problem signature:
  Problem Event Name:   APPCRASH
  Application Name: myexe.exe
  Application Version:  6.7.6.0
  Application Timestamp:    4d7fdffd
  Fault Module Name:    mshtml.dll
  Fault Module Version: 9.0.8112.16421
  Fault Module Timestamp:   4d76266c
  Exception Code:   c0000005
  Exception Offset: 0012c848
  OS Version:   6.1.7600.2.0.0.256.48
  Locale ID:    1037

And sometimes instead of mshtml.dll it says StackHash_f09d

Problem Event Name: APPCRASH
  Application Name: myexe.exe
  Application Version:  6.7.6.0
  Application Timestamp:    4d7fdffd
  Fault Module Name:    StackHash_f09d
  Fault Module Version: 0.0.0.0
  Fault Module Timestamp:   00000000
  Exception Code:   c0000005
  Exception Offset: 00000000
  OS Version:   6.1.7600.2.0.0.256.48
  Locale ID:    1037
提前谢谢

编辑:

这就是我在windbg中看到的,带有符号:

0:000> kb
ChildEBP RetAddr  Args to Child              
0020eda4 64d54f83 0566c988 00001012 00000000 mshtml!CDoc::ReduceMemoryPressureTask+0x1a
0020edb4 64d54f2c c6b991e4 0020ee78 00000113 mshtml!GWYieldToMsgOnCurrentThread+0x17b
0020edfc 770086ef 00192392 00000012 0000201b mshtml!GlobalWndProc+0x1f2
0020ee28 77008876 64d54afe 00192392 00000113 USER32!InternalCallWinProc+0x23
0020eea0 770089b5 00000000 64d54afe 00192392 USER32!UserCallWinProcCheckWow+0x14b
0020ef00 77008e9c 64d54afe 00000000 0020ef2c USER32!DispatchMessageWorker+0x35e
0020ef10 03b54726 0020ef9c fa69a961 00000000 USER32!DispatchMessageW+0xf
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Windows.Forms\f92c882fd4e7005c005e208daa04c28d\System.Windows.Forms.ni.dll
WARNING: Frame IP not in any known module. Following frames may be wrong.
0020ef2c 5af78aee 01b743e4 00000001 01ac95cc 0x3b54726
0020efe0 5af78757 00000000 ffffffff 00000000 System_Windows_Forms_ni+0x208aee
0020f038 5af785a1 01b6c610 1f3a000e 00000000 System_Windows_Forms_ni+0x208757
0020f068 5af35911 01bb7d84 0020f10c 003b73d8 System_Windows_Forms_ni+0x2085a1
0020f0e0 6f221b5c 015b1141 00000001 0020f170 System_Windows_Forms_ni+0x1c5911
0020f0f0 6f232209 0020f1c0 00000000 0020f190 mscorwks!CallDescrWorker+0x33
0020f170 6f246511 0020f1c0 00000000 0020f190 mscorwks!CallDescrWorkerWithHandler+0xa3
0020f2b4 6f246544 0032c040 0020f380 0020f34c mscorwks!MethodDesc::CallDescr+0x19c
0020f2d0 6f246562 0032c040 0020f380 0020f34c mscorwks!MethodDesc::CallTargetWorker+0x1f
0020f2e8 6f2b0c45 0020f34c d847bc11 00000000 mscorwks!MethodDescCallSite::CallWithValueTypes+0x1a
0020f44c 6f2b0b65 003239c0 00000001 0020f488 mscorwks!ClassLoader::RunMain+0x223
0020f6b4 6f2b10b5 00000000 d847b3d9 00000001 mscorwks!Assembly::ExecuteMainMethod+0xa6
0020fb84 6f2b129f 013a0000 00000000 d847b389 mscorwks!SystemDomain::ExecuteMainMethod+0x456
====更新(我不确定,如果我想把它贴成“回答你的问题”)============ 谢谢大家的帮助,我很感激

出于绝望,我开始删除代码片段,以了解代码的哪一部分会影响它(我们以多种形式使用webrowser控件)。在删除对LoginForm的调用(它也使用webrowser控件)后,问题消失了

登录表单承载webrowser控件,它导航到特定的url,例如/login.php,如果用户已经登录,则使用ObjectForScript从html调用表单中的方法UserLoggedIn。当调用UserLoggedIn时,如果显示LoginForm,我们调用Close()来关闭表单。尽管LoginForm做了所有这些,但我们并不总是显示它。我们是,只有在X秒后未调用UserLoggedIn()时才显示它(即用户需要登录)。 出于某种原因,感谢MS让我们能够调试到.net源代码中,当我们调用Close时,表单不可见,它实际上是在处理表单及其所有子项,因为IsHandleCreated为false。现在,关闭是从UserLoggedIn()调用的,这是由浏览器控件触发的事件(调用堆栈显示ieframe.dll、mshtml.dll等),因此webbrowser对象在从调用时被解除锁定。 解决这个问题的方法是,只有在表单可见时才调用Close。顺便说一句,我不知道,如果我们不显示表单,为什么IsHandleCreated是假的。我试图复制它,通过编写一个示例来创建一个表单,虽然没有显示,但它是IsHandleCreated,这是真的

----从Forms.cs-----


为了让您入门,计时器使用线程池线程,即MTA。如果我不得不猜测的话,我会说这可能与此有关,因为activex控件只能从STA线程安全地实例化。也许可以尝试手动创建线程,而不是使用计时器线程

browser.Navigate(“xxx”)是从计时器调用的


你用的是哪种定时器?如果计时器触发回调发生在另一个线程上,并且您正在调用浏览器对象上的方法,那么您很可能正在打开随机崩溃。尝试设置Control.CheckForIllegalCrossThreadCalls=true;在Main()方法中,重新运行应用程序。运行(…)方法,查看当它崩溃时,是否会收到更多“on point”错误消息或类似消息。

异常代码c0000005通常表示这是内存问题。也许这与应用程序的32位和64位区域变得混乱有关。 我会尝试让你的应用程序在64分钟内完全运行,然后在32分钟内完全运行,看看会发生什么。 试着以管理员的身份运行,看看这是否会改变什么。 此外,您还应该在有意义的点上放置try catch,并在发现错误时重试。 好吧,这些都是建议,所以试试看,看看你能不能给我们更多的信息


祝你好运

可能有原因,因为WinForms在STA下运行,但web浏览器需要MTA。在浏览器控件上方放置一个try catch,并检查是否存在r/w访问选项。正如oakcool所说的,我遇到了这个问题,主要是由于权限冲突。
程序在管理员级别运行,浏览器在用户级别运行,反之亦然。

需要调查的内容自从安装ie9以来,我遇到了相同的错误/崩溃。只有当页面上有youtube电影时才会发生这种情况。而不是和杰克·瑞奇森(Jack Juiceson)的窗户完全一样


但是在“故障模块名”后面,我没有得到mshtml.dll,我得到了d3d9.dll或类似的东西。veryyyyy奇数。

当jscript.dll注册不正确时,会发生此崩溃。ReduceMemoryPressureTask方法希望加载它,否则会导致空的取消引用。修复方法是在受影响的计算机上运行
regsvr32 jscript.dll
。您可以通过查看已加载的模块列表来检查是否缺少jscript.dll来检查错误。这可以通过编程或通过。

这是IE9代码内部的硬崩溃,AccessViolationException。可能是任何东西。使用独立的IE9版本并导航到同一个网页以缩小原因。正如Hans指出的,它是否发生在其他网页上?它不会在任何特定的url上崩溃,当我从url更改为“”时也会发生。浏览器。导航(“xxx”)从计时器调用,我不知道这是否需要做些什么。我能下载到哪里,尝试你的程序吗?我有类似的问题,但是C++没有.NET。你能提供一些关于产品和网站的信息吗?您是否在网站和应用程序之间执行任何数据信息?你是怎么做到的?那完全无关。确保升级到最新版本的Flash,如果仍然发生崩溃,请单击工具>Internet选项>高级,然后勾选“使用软件渲染”框。
        public void Close() 
        { 

        if (GetState(STATE_CREATINGHANDLE)) 
            throw new InvalidOperationException(SR.GetString(SR.ClosingWhileCreatingHandle, "Close"));

        if (IsHandleCreated) {
            closeReason = CloseReason.UserClosing; 
            SendMessage(NativeMethods.WM_CLOSE, 0, 0);
        } 
        else{ 
            // MSDN: When a form is closed, all resources created within the object are closed and the form is disposed.
            // For MDI child: MdiChildren collection gets updated (VSWhidbey# 368642 & 93550) 
            Dispose(); // THIS WAS CALLED WHEN FORM WAS NOT VISIBLE
        }
    }