Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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# 如何知道WebBrowser控件已完成加载包括flash在内的所有内容?_C#_Webbrowser Control - Fatal编程技术网

C# 如何知道WebBrowser控件已完成加载包括flash在内的所有内容?

C# 如何知道WebBrowser控件已完成加载包括flash在内的所有内容?,c#,webbrowser-control,C#,Webbrowser Control,有没有办法知道WebBrowser控件已完成加载页面? 目前我正在使用WebBrowser.ReadyState==WebBrowserReadyState.Complete。 但这表示网页内容已下载,但有时flash尚未加载。flash文件加载不会将其进度报告回浏览器,因此很遗憾,您无法捕获该进度。flash文件加载不会将其进度报告回浏览器,因此很遗憾,您无法捕获该进度这。WebBrowser控件有一个DocumentCompleted事件,您可以捕获该事件并对其作出反应。我不知道这是否包括F

有没有办法知道WebBrowser控件已完成加载页面? 目前我正在使用WebBrowser.ReadyState==WebBrowserReadyState.Complete。
但这表示网页内容已下载,但有时flash尚未加载。

flash文件加载不会将其进度报告回浏览器,因此很遗憾,您无法捕获该进度。

flash文件加载不会将其进度报告回浏览器,因此很遗憾,您无法捕获该进度这。

WebBrowser控件有一个DocumentCompleted事件,您可以捕获该事件并对其作出反应。我不知道这是否包括Flash内容加载-文档对此不是很清楚

webBrowser1.DocumentCompleted += 
     new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

private void webBrowser1_DocumentCompleted(object sender, 
                                     WebBrowserDocumentCompletedEventArgs e)
{
   // do whatever you need to do when the document is completely loaded here
}
WebBrowser控件有一个DocumentCompleted事件,您可以捕获该事件并对其作出反应。我不知道这是否包括Flash内容加载-文档对此不是很清楚

webBrowser1.DocumentCompleted += 
     new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

private void webBrowser1_DocumentCompleted(object sender, 
                                     WebBrowserDocumentCompletedEventArgs e)
{
   // do whatever you need to do when the document is completely loaded here
}

我发现最好的方法是使用计时器等待指定的时间,比如30秒,然后加载页面。
虽然不完美,但却是我想到的最好的方法。

我发现最好的方法是使用计时器等待指定的时间,如30秒,然后加载页面。 不完美,但却是我所想到的最好的。

您可以这样尝试:

bool loadingPage = true;

private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
     if (this.ReadyState != WebBrowserReadyState.Complete) return;
     if ((e.Url.AbsolutePath == "blank") || (e.Url != this.Url)) return;
     if (this.Document.Body.All.Count < 20) return;
     loadingPage = false
}

private void WaitPageLoad()
{
     //To avoid waiting forever. You can add timer here.
     while(loadingPage)
     {
     }
}
您可以这样尝试:

bool loadingPage = true;

private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
     if (this.ReadyState != WebBrowserReadyState.Complete) return;
     if ((e.Url.AbsolutePath == "blank") || (e.Url != this.Url)) return;
     if (this.Document.Body.All.Count < 20) return;
     loadingPage = false
}

private void WaitPageLoad()
{
     //To avoid waiting forever. You can add timer here.
     while(loadingPage)
     {
     }
}

如果您可以控制Flash,则可以放置ActionScript事件,然后将其传递到浏览器。

如果您可以控制Flash,则可以放置ActionScript事件,然后将其传递到浏览器。

是的。Javascript.Yup也有同样的问题。Javascript也有同样的问题。但即便如此,它也比不断轮询WebBrowser.ReadyState==WebBrowserReadyState.Complete更容易、更高效。是的,但我在几个工作线程上运行了几个WebBrowser,因此在我尝试实现事件时,代码变得混乱。所以我就这样离开了。确保cpu始终处于@100%状态,但我需要完成任务:但即便如此,它也比不断轮询WebBrowser.ReadyState==WebBrowserReadyState.Complete更简单、更高效。是的,但我在几个工作线程上运行了几个WebBrowser,因此当我尝试实现事件时,代码变得混乱。所以我就这样离开了。确保cpu始终处于@100%状态,但我需要完成任务: