标题:[求助]多线程问题:线程事件的处理程序只被最后一个线程执行
只看楼主
ahhxf2000
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-5-13
结帖率:0
已结贴  问题点数:20 回复次数:1 
[求助]多线程问题:线程事件的处理程序只被最后一个线程执行
我是个新手,请各位不吝赐教。在写一个小工具的时候遇到一个问题,特请教。
工具准备用线程实现读取网页,读取网页的单独放在一个类。在读取完成后会激发一个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事件。
是不是问题出在了红字部分。
高手们有什么解决方案或者正确的方法,请不吝赐教。我是新手,最好能有容易懂的例程
搜索更多相关主题的帖子: 线程 
2010-05-14 06:46
tance123
Rank: 2
等 级:论坛游民
帖 子:33
专家分:48
注 册:2009-7-31
得分:20 
那么复杂?看不懂学习学习
2010-05-19 16:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-306591-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.264486 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved