小编Mar*_*Wil的帖子

Web.ReadyState未达到"完成"阶段

首先,由于我缺乏技术知识和可能的错误沟通而道歉,我对C#来说是一个新手.

我接管了一个项目,它抓取了一些网页并将它们保存为.png文件.

private void CaptureWebPage(string URL, string filePath, ImageFormat format)
{
    System.Windows.Forms.WebBrowser web = new System.Windows.Forms.WebBrowser();
    web.ScrollBarsEnabled = false; 
    web.ScriptErrorsSuppressed = true; 
    web.Navigate(URL); 

    while (web.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete)
        System.Windows.Forms.Application.DoEvents();
    System.Threading.Thread.Sleep(5000);

    int width = web.Document.Body.ScrollRectangle.Width;
    width += width / 10;
    width = width <= 300 ? 600 : width; 


    int height = web.Document.Body.ScrollRectangle.Height;
    height += height / 10;

    web.Width = width;
    web.Height = height;

    _bmp = new System.Drawing.Bitmap(width, height);


    web.DrawToBitmap(_bmp, new System.Drawing.Rectangle(0, 0, width, height));
    _bmp.Save(filePath, format);

    _bmp.Dispose();

}
Run Code Online (Sandbox Code Playgroud)

但是,某些页面(只有少数几个)导致进程挂起.它不是所有的时间,而是经常.我发现问题似乎出现在以下代码部分:

while (web.ReadyState …
Run Code Online (Sandbox Code Playgroud)

c# winforms

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

winforms ×1