我告诉你思路,你自己去实现。
创新互联专注于麦积企业网站建设,成都响应式网站建设,商城网站建设。麦积网站建设公司,为麦积等地区提供建站服务。全流程按需定制设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
建议你用“守护线程”的方式去做,这样做对于你一个小任务来说更合适。首先,你要建立一个队列,将所有下载任务放入队列。注意,这个队列必须是“线程安全”的,即两个线程不会抢到同一个任务。然后只开10个线程。这些线程会从队列中读取任务。当一个线程不能再从队列中读取任务时,也就是队列为空时,退出。等所有线程都退出后,你的程序就结束了。
还有一种方法,叫“线程池”,也就是你说的方法,稍微复杂一点:
指定一个变量,用来表示线程的数量。刚开始为0,每开一个线程+1。当一个线程完成任务退出后,这个变量-1。直到所有任务都完成后,不再产生新线程。
ListBox操作需要用Invoke。另外多线程方式并不是并行处理。
建议采用.net framework 4 带的并行处理循环操作,若不是4.0版本的framework,可以使用Aforge的并行库比较方便。
首先,你把你那些要运行很久的过程。尽量放在一个过程中。
因为线程只能是过程,不能使函数,没有返回值的。
然后,在某个事件下这样写:
**这里我假设你的那个很就的过程叫做 sub aaa()
调用如下:
Dim mythread As New System.Threading.Thread(AddressOf aaa)
mythread.Start()
***********
这样就是定义一个线程,名字叫 mythread,这个线程会运行aaa这个过程。
start 就是让线程运行。
Sub Main()
Dim thr As Thread
For Pi As Integer=0 To 4 //启用5线程
MulParams =Pi vbTab sFile vbTab dFile vbTab 1 vbTab DelN vbTab cr vbTab cg vbTab cb vbTab IndexI
GlobalParamas(pi)=MulParams .Split(vbTab)
thr=New Thread(AddressOf MyMulThreadCaller)
thr.Start() //启动多线程进程
Application.DoEvents
Next
End Sub