当前位置: 首页 > 编程语言 > C#

Browser.ReadyState上的致命执行错误Share

时间:2023-04-10 22:16:36 C#

Browser.ReadyState上的致命执行错误确切的错误是这样的:运行时遇到致命错误。错误地址位于线程0x2044的0xed40646c。错误代码是0xc0000005。此错误可能是CLR中的错??误,也可能是用户代码中不安全或无法验证的部分中的错误。此错误的常见来源包括COM互操作或PInvoke的用户编组错误,这可能会损坏堆栈。据我所知,我没有使用不安全的用户代码。导致问题的代码是这样的:WebClientclient=newWebClient();字符串pageHtml=client.DownloadString(url);browser.ScriptErrorsSuppressed=true;浏览器.DocumentText=pageHtml;做{Application.DoEvents();}while(浏览器.ReadyState!=WebBrowserReadyState.Complete);//这里发生崩溃现在是关键。此代码循环运行。经常发生这个错误。有时它会运行第1000次。上次是第5545次。看起来很随意。我怎么解决这个问题?或者我怎样才能获得更多信息来修复它?我的解决方案基于如何等待WebBrowser在VB.NET中完全加载?您需要做的是向Completed事件添加一个bool_pageReady变量。voidweb_DocumentCompleted(objectsender,WebBrowserDocumentCompletedEventArgse){varurlCurrent=e.Url.ToString();varbrowser=(WebBrowser)发件人;if(!(urlCurrent.StartsWith("http://")||urlCurrent.StartsWith("https://"))){//在AJAX中}if(e.Url.AbsolutePath!=browser.Url.AbsolutePath){//IFRAME}else{//文档已加载100%Debug.WriteLine("DocumentCompleted"+DateTime.Now.TimeOfDay.ToString());_pageReady=真;//开始了!!!!:)尝试{mshtml.IHTMLDocument2docs2=(mshtml.IHTMLDocument2)web.Document.DomDocument;mshtml.IHTMLDocument3docs3=(mshtml.IHTMLDocument3)web.Document.DomDocument;mshtml.IHTMLElement2body2=(mshtml.IHTMLElement2)docs2.body;mshtml.IHTMLElement2root2=(mshtml.IHTMLElement2)docs3.documentElement;//确定图像的尺寸;我们可以在这里添加minWidth//以确保我们更接近最小宽度(计算出的宽度//可能比我们想要的少几个像素)。整数idth=Math.Max(body2.scrollWidth,root2.scrollWidth);intheight=Math.Max(root2.scrollHeight,body2.scrollHeight);//获取文档正文的大小RectangledocRectangle=newRectangle(0,0,width,height);web.Width=docRectangle.Width;web.Height=docRectangle.Height;//如果imgsize为null,图像的大小将//与webbrowser对象的大小相同//否则将图像大小设置为imgsizeRectangleimgRectangle;如果(imgsize==null)imgRectangle=docRectangle;elseimgRectangle=newSystem.Drawing.Rectangle(){Location=newSystem.Drawing.Point(0,0),Size=imgsize.Value};//创建位图对象__Bitmap=newBitmap(imgRectangle.Width,imgRectangle.Height);//矩形分辨率=Screen.PrimaryScreen.Bounds;//__Bitmap.SetResolution(分辨率.宽度,分辨率.高度);//获取浏览器的viewobjectIViewObjectivo=web.Document.DomDocumentasIViewObject;使用(图形g=Graphics.FromImage(__Bitmap)){//获取设备上下文句柄并绘制IntPtrhdc=g.GetHdc();ivo.Draw(1,-1,IntPtr.Zero,IntPtr.Zero,IntPtr.Zero,hdc,refimgRectangle,refdocRectangle,IntPtr.Zero,0);g.ReleaseHdc(hdc);}//varrandomPart=System.IO.Path.GetRandomFileName();//__Bitmap.Save(@"D:t"+randomPart+".png");if(CropRectangle!=null){if(CropRectangle.Width>0&&CropRectangle.Height>0){位图bmpCrop=__Bitmap.Clone(CropRectangle,__Bitmap.PixelFormat);__Bitmap=bmpCrop;}}//__Bitmap.Save(@"D:cropped"+randomPart+".png");bitmapPointer=__Bitmap.GetHbitmap();}catch{//System.Diagnostics.Process.GetCurrentProcess().Kill();}}}并做类似的事情以上就是C#学习教程:FatalexecutionerroronBrowser的全部内容。){try{if(web==null)web=InitWebBrowser();网。导航(_navigateURL);try{while(_pageReady==false)//是的!!!!!!这是工作!!!!{系统.Windows.Forms.Application.DoEvents();}//Thread.Sleep(WaitForWebsite);---它有效但是....//while(web.ReadyState!=WebBrowserReadyState.Complete)---它给出了错误//System.Windows.Forms.Application.DoEvents();}catch(Exception){}}catch(Exception){}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载,请注明出处: