好的,我对编码和使用后台工作人员有点陌生,所以不要太苛刻地评判我。
基本上我正在催生一堆后台工作人员并让他们完成一项任务。问题是每个后台工作人员都在做同样的任务。我希望所有衍生的后台工作人员每个人都从事不同的任务,如果另一个后台工作人员已经完成了该任务,则忽略该任务。
这是我的后台工作人员做的工作子:
Private Sub bgw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
Threading.Thread.Sleep(5000)
Dim bgw As BackgroundWorker = DirectCast(sender, BackgroundWorker)
Dim url As String
Dim pr As Integer
Dim prproxy As Integer
Dim randomLine As Integer
For rowIndex = 0 To DataGridViewX1.RowCount - 1
DataGridViewX1.Rows(rowIndex).Cells("Status").Value = "Working"
url = DataGridViewX1.Rows(rowIndex).Cells("url").Value.ToString
If SwitchButton1.Value = True Then 'check page rank if proxies are enabled.
randomLine = RandomNumbers.Next(proxies.TextBoxX1.Lines.Length)
Dim s As String = proxies.TextBoxX1.Lines(randomLine)
RandomProxy = Split(s, ":", , CompareMethod.Text)
pr = PageRank.GooglePageRank.GetPageRankWithProxy(url, RandomProxy(0), RandomProxy(1))
DataGridViewX1.Rows(rowIndex).Cells("proxy").Value = RandomProxy(0) & ":" & RandomProxy(1)
Else
pr = PageRank.GooglePageRank.GetPageRank(url) 'If proxies are not enabled do this.
End If
DataGridViewX1.Rows(rowIndex).Cells("PR").Value = pr
DataGridViewX1.Rows(rowIndex).Cells("Status").Value = "Done"
Next
End Sub
我猜我的问题出在 for 循环中,但是如果没有它,我无法思考如何做到这一点,并使每个后台工作人员在不同的 URL 上工作。