Sub Main()
10年积累的成都做网站、成都网站设计、成都外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有嘉峪关免费网站建设让你可以放心的选择与我们合作。
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
我告诉你思路,你自己去实现。
建议你用“守护线程”的方式去做,这样做对于你一个小任务来说更合适。首先,你要建立一个队列,将所有下载任务放入队列。注意,这个队列必须是“线程安全”的,即两个线程不会抢到同一个任务。然后只开10个线程。这些线程会从队列中读取任务。当一个线程不能再从队列中读取任务时,也就是队列为空时,退出。等所有线程都退出后,你的程序就结束了。
还有一种方法,叫“线程池”,也就是你说的方法,稍微复杂一点:
指定一个变量,用来表示线程的数量。刚开始为0,每开一个线程+1。当一个线程完成任务退出后,这个变量-1。直到所有任务都完成后,不再产生新线程。
t1 = New Threading.Thread(AddressOf sDownFile) 你这句都没代入参数啊。
改成这样试试 t1 = New Threading.Thread(AddressOf sDownFile(参数1,参数2))
首先,是这样的,你要是只是想实现类似迅雷下载列表的功能,还是可以的,但是,要是在展现也就是说界面上的样子,也和迅雷的一样,那你就要自己重绘窗体还要结合美工技术才能做出来。
如果只是实现功能,可以看一下的讲解:
进度条的问题:如果只是一个进度条,那就不用多线程技术,因为只控制一个进度而已,如果向迅雷那样,实时的显示多个进度,那就要多个线程了,一个线程控制一个进度。
记录文档用何种方式:这个其实很简单,如果,你要是有数据库,那就最好存在数据库中,方便存储管理,网络数据库的话,有很多中,比如Mysql,oracle,本地数据有sqlite,access等,要是采用文件存储的话,可以用ini文件,xml文件或是简单点直接文本文件也是可以的。
下载完的记录加载到已完成列表,没下载完的记录自动加载到下载列表
其实这个也不难的,在控制进度的条的方法中,增加一if判断,如果能100%就将信息加载到完成列表,在判断中计数如果多次判断都没有进度,就认为文件现在失败,就在现在信息添加到未完成列表。
以上只是分析实现过程,实例的话,那会很多,也很复杂,以上内同纯手打,如果您觉得满意,请采纳我的回答,也不枉费我这么认真分析,多谢了。