确定这里是我的代码:多线程 - 添加更多的线程,并继续操作
For i = 0 To 10
Dim tTemp As Threading.Thread = New Threading.Thread(AddressOf dwnld)
tTemp.IsBackground = True
'tTemp.Start(geturl)
lThreads.Add(tTemp)
'MsgBox(lThreads.Item(i).ThreadState)
Next
我创建的线程有10个线程的列表,为它们分配的功能,性能,并将它们添加到列表中。
'While ListBox2.Items.Count > 0
For i = 0 To lThreads.Count - 1
If (lThreads.Item(i).ThreadState = 12) Then
If (ListBox2.Items.Count > 0) Then
lThreads.Item(i).Start(geturl)
If (i = lThreads.Count - 1) Then
i = 0
End If
Else
Exit For
End If
'MsgBox(lThreads.Item(i).ThreadState)
ElseIf (lThreads.Item(i).ThreadState = 16) Then
lThreads.RemoveAt(i)
Dim tTemp As Threading.Thread = New Threading.Thread(AddressOf dwnld)
tTemp.IsBackground = True
lThreads.Add(tTemp)
If (i = lThreads.Count - 1) Then
i = 0
End If
End If
Next
发生了什么事情,我看到函数dwnld完成后线程停止。所以我首先检查状态(12表示背景和未启动)。在情况12启动线程,并在案件16(停止)删除该特定的线程,并添加一个不同的线程,如我在上面添加10。
还有一个检查,当我的计数器到达最后一个号码,通过分配i = 0重新启动整个循环。
该程序下载一些网页,url从listbox2传递。 geturl会传递url并将其从列表中删除。所以当列表框为空时,退出for循环。
但上面的代码只运行了11次,并没有重新启动。我试着用标签和转到,但它简单的挂起。
有谁能告诉我该怎么办?
我想要的是保持10个线程继续下载网页,当列表为空时退出该功能。
好吧,我会检查出来。感谢让我知道回合:) – xhammer 2012-04-03 15:23:09
@ xhammer:没问题,并再次发布另一个问题,如果你遇到这些新技术的麻烦。 – 2012-04-03 16:03:06