確定這裏是我的代碼:多線程 - 添加更多的線程,並繼續操作
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