如何并行发送multible downloadstring请求(VB.net)

时间:2016-01-21 13:43:15

标签: vb.net

如何让我的客户端同时(并行)下载多个htmlsource代码而不是seriel。

Dim client As WebClient = New WebClient()
client.Encoding = System.Text.Encoding.UTF8

      Source1 = client.DownloadString("www.google.com"))
      Source2 = client.DownloadString("www.google.com"))
      Source3 = client.DownloadString("www.google.com"))
      Source4 = client.DownloadString("www.google.com"))
      Source5 = client.DownloadString("www.google.com"))

此请求大约需要1秒,因为Source1发送请求并在source2发送请求之前等待响应。

我目前的解决方案是使用5个不同的背景工作者,然后同时启动它们,并让每个人发送其中一个请求。

Button1.click:
backgroundworker1.RunWorkerAsync()
backgroundworker2.RunWorkerAsync()
backgroundworker3.RunWorkerAsync()
backgroundworker4.RunWorkerAsync()
backgroundworker5.RunWorkerAsync()

backgroundworker1.work:
Source1 = client.DownloadString("www.google.com"))

backgroundworker2.work:
Source2 = client.DownloadString("www.google.com"))

backgroundworker3.work:
Source3 = client.DownloadString("www.google.com"))

backgroundworker4.work:
Source4 = client.DownloadString("www.google.com"))

backgroundworker5.work:
Source5 = client.DownloadString("www.google.com"))

这实际上有效,现在只需0.20秒即可获得所有5个源代码。但这真的是实现这一目标的唯一途径。

我有一些漂亮的进步循环,即使将循环分成两个独立的后台工作程序也是一件痛苦的事。当那些说那时我可能想要至少8个独立的背景工作者来达到我需要的速度。这个解决方案几乎是不可能的。请帮助:)

0 个答案:

没有答案