【发布时间】:2011-09-23 02:32:40
【问题描述】:
我有这段代码,我运行队列为 10,000,即使设置了最大值 50 但线程池计数变高。
谁能帮我找出错误
Public Sub DoWork(ByVal objItem As Object)
Dim objUrl as String = DirectCast(objItem, string)
Try
If objUrl Is Nothing Then
exit sub
End If
Dim URL as New Uri(objUrl)
AddItem(URL.AbsoluteUri,gethtml(URL))
Catch ex As Exception
debug.Print("Error " & ex.StackTrace )
End Try
End Sub
Private Sub btnStart_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnStart.Click
btnStart.Enabled =False
ThreadPool.SetMaxThreads(50, 50)
System.Threading.Thread.Sleep(1000)
listView1.Items.Clear
For Each sItem As String In txturls.Lines
if sItem.Trim <>string.empty
If sItem.Contains("http://")=False Then
sItem="http://" & sItem
End If
ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf DoWork), sItem)
TotalItems+=1
tsslTotal.Text =String.Format ("Total Tasks: {0}",TotalItems)
end if
Next
End Sub
谢谢
编辑
对于那些询问的人,
GetHtml 从网上获取网页源
AddItem 将 GetHtml 的结果添加到 Listview
再次感谢您的关注
编辑
我使用此代码检查每秒运行的线程数
Sub Timer1Tick(sender As Object, e As EventArgs)
tsslthreads.Text=string.Format ("Threads: {0}", Process.GetCurrentProcess().Threads.Count)
End Sub
谢谢
【问题讨论】:
-
“gethtml”是做什么的?这些可能是本机线程,不由 TP 管理。
-
我的帖子更新了,请查收
标签: .net vb.net winforms threadpool