[求助]多线程问题:线程事件的处理程序只被最后一个线程执行
我是个新手,请各位不吝赐教。在写一个小工具的时候遇到一个问题,特请教。工具准备用线程实现读取网页,读取网页的单独放在一个类。在读取完成后会激发一个Compled事件。
在UI窗口中截获这个事件。有关代码如下:
Private WithEvents objCreditAssi As CreditSystemAssi
在Timer的Tick事件中创建新线程
objCreditAssi = New CreditSystemAssi()
objThreads(序号) = New Threading.Thread(AddressOf objCreditAssi.GetWeb)
objThreads(序号).Start()
ThreadsStatus(序号) = 1 '标识此线程正在执行
CurrentThreadsCount = CurrentThreadsCount + 1‘目前正在执行的线程数
Application.DoEvents()
在Completed事件处理程序中,将发出事件的线程序号标识为空闲
Private Shared Sub Thread_Complete(ByVal ThreadCode As String) Handles
ThreadsStatus(intThreadCode) = 0 '标识线程空闲
CurrentThreadsCount = CurrentThreadsCount - 1
Debug.Print("线程" & ThreadCode & "已完成")
objThreads(intThreadCode).Abort()
end sub
在实际运行中,Timer会不断根据objThreads线程数组的空闲状况,分配新任务给空闲的线程。
但问题是:线程完成后,UI只响应最后一个线程的completed事件。
是不是问题出在了红字部分。
高手们有什么解决方案或者正确的方法,请不吝赐教。我是新手,最好能有容易懂的例程