【问题标题】:How to navigate in a list of links using webbrowser?如何使用网络浏览器在链接列表中导航?
【发布时间】:2014-03-23 01:24:25
【问题描述】:

我有一个 url 列表,我需要导航它们。如何确保每个 url 都会调用 DocumentCompleted 事件?我已经尝试创建许多线程并尝试使用单个线程,但应用程序仍然没有为每个 url 触发事件 DocumentCompleted。

有没有办法在 url 列表中创建一个循环并让它们调用 DocumentCompleted 直到线程调用下一个 url ?

【问题讨论】:

  • 你为什么要那个?
  • 每个网址都有不同的文字,我需要保存这些文字。就这么简单。

标签: c# multithreading url webbrowser-control


【解决方案1】:

要实现这一点,async/awaitTask Parallel Library 可能会派上用场。它们允许为异步逻辑(一个接一个地处理多个导航的DocumentCompleted 事件)提供熟悉的伪线性代码流。

我为 WinForm 应用 here控制台应用 here 回答了类似的问题。

如果你需要面向 .NET 4.0 但使用 VS2012+ 进行开发,你仍然可以使用 async/await,微软为此提供了 Microsoft.Bcl.Async 库。

如果 C# 5.0 不适用于此项目,您可以使用 yield,如 described here

【讨论】:

  • 我去看看。谢谢!
  • 抱歉,我忘了说我使用的是 .net 4.0,所以我不能使用 async/await。不过还是谢谢你的帮助。
  • @galioni,然后你可以使用yield,就像这样:stackoverflow.com/a/22296644/1768303。或者,如果您需要面向 .NET 4.0 但使用 VS2012+ 进行开发,您仍然可以使用 async/await,微软为此提供了 Microsoft.Bcl.Async 库。
  • 它在 .net 4.0 的 vs2010 中工作!非常感谢! :)
【解决方案2】:

如果页面上有脚本错误,它可能永远无法完成。您应该为该事件设置一个超时时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多