我试图了解加速在多个网站的源中搜索字符串的小程序的最佳方法。目前的程序如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim urls() As String = TextBox1.Lines()
Dim stringstofind() As String = TextBox2.Lines()
For Each url As String In urls
CheckForStrings(url, stringstofind)
Next
End Sub
Private Sub CheckForStrings(ByVal url As String, ByVal stringstofind() As String)
Dim wc As New WebClient()
Dim source As String = wc.DownloadString(url)
'MessageBox.Show(source)
For Each stringtofind As String In stringstofind
If (source.IndexOf(stringtofind) <> -1) Then
TextBox3.AppendText("url: " + url + " string: " + stringtofind + vbCrLf)
Exit For
Else
TextBox3.AppendText("url: " + url + " string: " + "NOT FOUND" + vbCrLf)
End If
Next
End Sub
似乎可用的选项是: 使用 parallel.for each 为每个循环线程化初始值。除了一些避免跨线程问题和阻塞 GUI 的编辑之外,这似乎很简单,但似乎不是最好的方法。
使用 webclient.DownloadStringAsync 方法。这是我看到的第一件事,但我不知道如何从 DownloadStringCompleted 事件传回结果字符串。另外,如果我能解决这个问题,你如何限制同时发出的请求数量,以避免网络连接过载?
我还查看了一些使用 .net4.5 的 c# 示例,它们看起来很棒,但是该程序需要在 server2003 上运行,所以我想那是不可能的
非常感谢任何帮助。