c# – 我可以等待webbrowser使用for循环完成导航吗?

c# – 我可以等待webbrowser使用for循环完成导航吗?,第1张

概述我有一个for循环: for (i = 0; i <= 21; i++){ webB.Navigate(URL);} webB是一个webBrowser控件,我是一个int. 我想等待浏览器完成导航. 然而,我找到了this: >我不想使用任何API或插件 >我不能使用另一个void函数,如this answer所示 有没有办法在for循环中等待? 假设您在WinFroms应用程序中托管W 我有一个for循环:
for (i = 0; i <= 21; i++){  webB.Navigate(URL);}

webB是一个webbrowser控件,我是一个int.

我想等待浏览器完成导航.

然而,我找到了this:

>我不想使用任何API或插件
>我不能使用另一个voID函数,如this answer所示

有没有办法在for循环中等待?

解决方法 假设您在WinFroms应用程序中托管Webbrowser,您可以使用async / await模式轻松高效地循环执行.试试这个:
async Task DoNavigationAsync(){    taskcompletionsource<bool> tcsNavigation = null;    taskcompletionsource<bool> tcsdocument = null;    this.WB.Navigated += (s,e) =>    {        if (tcsNavigation.Task.IsCompleted)            return;        tcsNavigation.SetResult(true);    };    this.WB.documentCompleted += (s,e) =>    {        if (this.WB.ReadyState != WebbrowserReadyState.Complete)            return;        if (tcsdocument.Task.IsCompleted)            return;        tcsdocument.SetResult(true);     };    for (var i = 0; i <= 21; i++)    {        tcsNavigation = new taskcompletionsource<bool>();        tcsdocument = new taskcompletionsource<bool>();        this.WB.Navigate("http://www.example.com?i=" + i.ToString());        await tcsNavigation.Task;        DeBUG.Print("Navigated: {0}",this.WB.document.URL);        // navigation completed,but the document may still be loading        await tcsdocument.Task;        DeBUG.Print("Loaded: {0}",this.WB.documentText);        // the document has been fully loaded,you can access DOM here    }}

现在,了解DoNavigationAsync以异步方式执行非常重要.这是你如何从Form_Load调用它并处理它的完成:

voID Form_Load(object sender,EventArgs e){    var task = DoNavigationAsync();    task.ContinueWith((t) =>    {        MessageBox.Show("Navigation done!");    },TaskScheduler.FromCurrentSynchronizationContext());}

我已经回答了类似的问题here.

总结

以上是内存溢出为你收集整理的c# – 我可以等待webbrowser使用for循环完成导航吗?全部内容,希望文章能够帮你解决c# – 我可以等待webbrowser使用for循环完成导航吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存