【文件属性】:
文件名称:Delphi线程池实现多线程FTP分段下载组件
文件大小:14KB
文件格式:RAR
更新时间:2022-11-07 03:09:40
Delphi FTP 线程池
Delphi线程池实现多线程FTP分段下载组件
by :renshouren
mail:114032666@qq.com
QQ:114032666
2019.10.05
使用的组件
1、TIdFTP Indy FTP客户端
2、TThreadsPool 线程池
工作原理及流程
调用本单元,将自动在程序初始化时生成线程池TThreadPoolDown实例 Share_ThreadPool_FTPDown
一、外部调用方法
外部只需要一次性调用 FtpDown() 函数向线程池加入下载任务,下载任务执行中的事件会通过调用时注册的
回调函数 AFtpDownEvent 进行通知。
二、内部工作流程
1、FtpDown()函数将调用TThreadPoolDown.AddFtpDown() ,然后调用TADownFileObj.MakeGetFileSizeObj()分配线程任务
本过程中,将向回调函数 AFtpDownEvent 触发 HEM_ADDURL 事件通知
2、工作线程调用任务对象TFTPHeadObj.DoThreadExecute 过程获取远程文件大小
备注:该功能实际使用到FTP命令SIZE,该命令一些老版本FTP服务器有可能不支持
本过程中,若获取文件大小成功,将向回调函数 AFtpDownEvent 触发 HEM_GETSIZE 事件通知,
若失败,则触发 HEM_ERROR 事件通知
3、得到远程文件大小后,调用TADownFileObj.MakeGetObjs(),分配获取远程文件线程任务
本过程中,开始时,将向回调函数 AFtpDownEvent 触发 HEM_WORKBEGIN 事件通知
在接收数据时,向回调函数 AFtpDownEvent 触发 HEM_WORK 事件通知
4、工作线程调用任务对象 TFTPGetObj.DoThreadExecute 实际下载远程文件数据块
每一个数据块下载任务完成后,触发 HEM_BLOCKOK 事件通知
5、所有数据块完成后,将调用 DoDownloadOK 函数,触发 HEM_DOWNOK 事件通知
【文件预览】:
rsrFtpDownDemo
----rsrFtpDown.pas(23KB)
----Project1.bdsproj.local(653B)
----rsrThreadPoolSimple.pas(8KB)
----Project1.res(4KB)
----Project1.bdsproj(8KB)
----Project1.identcache(157B)
----Unit1.dfm(2KB)
----Project1.cfg(422B)
----Project1.dpr(230B)
----Unit1.pas(2KB)
网友评论
- 东西缺了,用了就出错