【问题标题】:Wait for WebBrowser to finish process等待 WebBrowser 完成进程
【发布时间】:2011-11-09 20:49:24
【问题描述】:

在等待浏览器完成进程后再继续进行编码的最佳方式是什么?我在下面尝试了这段代码,并且在处理下一个链接之前,该过程不会等到它完成。

    void WaitBrowserLoading()
    {
        while (webBrowser1.IsBusy)
            Application.DoEvents();
        for (int i = 0; i < 500; i++)
            if (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
                lblStoreID.Text = "";
                //System.Threading.Thread.Sleep(5);
            }
            else
                break;
        Application.DoEvents();
    }

【问题讨论】:

  • 作为用户,您如何知道网络浏览器已完成?
  • @jeffamphone 我在表单上有一个浏览器窗口。我只需要一种方法来停止所有编码,直到 WebBrowser1 完成处理。你以前做过还是只是在询问?在 VB 中它很简单,但 C# 似乎没有可靠的方法来 100% 知道它已完成。
  • @acctman:你会在 VB 中做什么?
  • 不,我正在做一个思考练习。我建议不可能知道网页何时完成。你怎么知道程序何时结束?你怎么知道是否有一些 JS 会在某个时间间隔内唤醒并决定做更多的工作,通过 XHR 加载更多数据等?

标签: c# winforms webbrowser-control


【解决方案1】:

NavigatedDocumentCompleted 事件是否符合您的要求?我怀疑后者更适合你:

处理 DocumentCompleted 事件以在新文档完成加载时接收通知。当 DocumentCompleted 事件发生时,新文档已完全加载,这意味着您可以通过 Document、DocumentText 或 DocumentStream 属性访问其内容。

基本上你会在导航之前禁用所有控件(或任何你想“停止”的控件),然后在事件触发时重新启用它们。

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2019-01-30
    相关资源
    最近更新 更多