Private _Proxies As New List(Of String)
Private _Array As New List(Of String)
Private Sub btnLeech_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Leech_btn.Click
Worker.RunWorkerAsync(_Array)
End Sub
'Open a bunch of new threads to download sources of webpages
Private Sub Fetch(ByVal sender As System.Object, _
ByVal e As System.ComponentModel.DoWorkEventArgs) Handles Worker.DoWork
Dim websiteUri As Uri = Nothing
Dim Website As String
For I = 0 To _Array.ToList.Count - 1
Website = _Array(I)
Using wc As Net.WebClient = New Net.WebClient
AddHandler wc.DownloadStringCompleted, AddressOf SourceDownloaded
If Uri.TryCreate(Website, UriKind.Absolute, websiteUri) Then
wc.DownloadStringAsync(New Uri(Website))
Threading.Thread.Sleep(250)
Else
If Notify.Checked = True Then
TrayIcon.ShowBalloonTip(1, "Invalid website", "There was a invalid site in the list." & Website.ToString, ToolTipIcon.Error)
Me.TrashSite_list.Items.Add(Website)
Else
Me.TrashSite_list.Items.Add(Website)
End If
End If
End Using
Next
End Sub
'Grab the proxies from the webpages
Private Sub SourceDownloaded(ByVal sender As Object, ByVal e As Net.DownloadStringCompletedEventArgs)
Dim strRegex As String = "\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\:[0-9]{1,5}\b"
Dim myRegexOptions As RegexOptions = RegexOptions.None
Dim myRegex As New Regex(strRegex, myRegexOptions)
Dim frm As New Proxies
Dim i As Integer
My.Settings.Proxies = New StringCollection
If e.Error Is Nothing Then
For Each myMatch As Match In myRegex.Matches(e.Result)
If myMatch.Success Then
Try
i += i
_Proxies.Add(myMatch.ToString)
Worker.ReportProgress(i)
Catch ex As WebException
MessageBox.Show(
ex.ToString,
ErrorToString,
Windows.Forms.MessageBoxButtons.OK)
End Try
End If
Next
End If
End Sub
Private Sub Worker_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles Worker.ProgressChanged
Proxy_list.Items.AddRange(_Proxies.ToArray)
Proxy2_lbl.Text = "Proxies: " & Proxy2_list.Items.Count
Proxy_lbl.Text = "Proxies: " & Proxy2_list.Items.Count
End Sub
这是我的代码,我希望它用它更新UI,但我不确定如何去做。我正在寻找一个评论的例子,所以我可以理解它。到目前为止,我已经在几个网站上发布了,每个人都会告诉我该怎么做,或给我一个例子,但没有人会告诉我该怎么做!他们希望我知道代码的作用,但如果我知道它做了什么,你真的认为我会问问题吗?无论如何,回到主题:使用BackgroundWorker和更新UI
这是我想要完成的。当我点击Leech_btn时,它将我所有网站从Website_list添加到名为“Array”的数组中。然后它以数组作为参数运行背景工作。后台工作人员从列表中下载网站的字符串并将其移至SourceDownloaded进行过滤。 (它从网站中删除所有代理)然后它应该在Proxy_list中显示代理,但这是我遇到问题的地方。我该怎么办?
您的获取函数接收一个字符串数组,但是当时然后将e.Argument作为一个字符串进行投射。 我敢肯定,当我= Array.Length时,你也会在Website = Array(I)上得到一个异常 –