C# 在循环中触发WebBrowser.DocumentCompleted事件

C# 在循环中触发WebBrowser.DocumentCompleted事件,c#,webbrowser-control,navigateurl,C#,Webbrowser Control,Navigateurl,我正在开发一个简单的应用程序,它需要遍历URL列表,这些URL在for-each循环中传递给WebBrowser Navigate函数。我希望看到DocumentCompleted事件在每次调用Navigate函数后触发,但它似乎只有在整个表单完成加载后才会触发,而循环也完成了 我想我在这里遗漏了一些基本的东西,但是一些帮助和建议会很好 谢谢 下面是我正在尝试的代码示例 此foreach循环在我正在使用的WinForms页面的Form Load事件中运行 int id =

我正在开发一个简单的应用程序,它需要遍历URL列表,这些URL在for-each循环中传递给WebBrowser Navigate函数。我希望看到DocumentCompleted事件在每次调用Navigate函数后触发,但它似乎只有在整个表单完成加载后才会触发,而循环也完成了

我想我在这里遗漏了一些基本的东西,但是一些帮助和建议会很好

谢谢

下面是我正在尝试的代码示例

此foreach循环在我正在使用的WinForms页面的Form Load事件中运行

            int id = 0;
        foreach (DataRow row in quals.Rows)
        {
            URN = row["LAIM_REF"].ToString();

            string URN_formated = URN.Replace("/", "_");
            string URL = "http://URL_I_AM_GOING_TOO/";
            string FullURL = URL + URN_formated;

            wbrBrowser.ScriptErrorsSuppressed = true;
            wbrBrowser.Refresh();
            wbrBrowser.Navigate(FullURL);

            id += 1;

            label1.Text = id.ToString();

        }
在循环到达直线的点处:

wbrBrowser.Navigate(FullURL);
我希望这次活动:

        private void wbrBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
...
}
因此,能够针对循环中返回的每个URL运行进程

谢谢

我用了:

while (wbrBackground.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); }

完成导航功能后,它现在可以正常工作。

您能提供一些代码来显示您迄今为止所做的尝试吗?它是WPF还是WinForm应用程序?另外,一些诊断跟踪也会很有用,如果有的话。我刚刚在原始问题中添加了一些代码片段,希望它能帮助我找到问题的解决方案。这是不好的:1它使用了一种方法,徒劳地烧掉了CPU核;2它使用了DoEvents,也就是说。谢谢你-你对如何通过其他方式实现这一点有什么建议吗?我有,例如,我想我以前发布过它;或者,这两个看起来都很棒!我特别关注的是使用example.com测试站点的一个,但是我无法让它在winform中工作。。。??这是专门写来作为控制台应用程序使用的吗!!正是我想要的!非常感谢你!这正是我所寻找的,并且能够使用这个框架来实现我所追求的!