Delphi ICS 多线程下载

 一、FMultiPartHTTP 的事件:

  下载完成事件

      HTTPRequestDone(Sender: TObject; ErrorCode: Integer; const Reason: string);

    在这里释放下载的文件流

      FMultiPartHTTP.FileStream.Free;

     FMultiPartHTTP.FileStream := nil;

     

二、下载显示状态信息事件

   HTTPShowStats(Sender: TObject);

   在这里显示当前下载状态   

  str :=  '已下载(MB):' + Format('%2f',[FMultiPartHTTP.TotalCount / 1024 / 1024]) +

  ' 完成百分比:' + Format('%3.0f', [FMultiPartHTTP.PercentDone])+'%' +

  ' 下载速度(KB/秒):' + Format('%6.2f', [FMultiPartHTTP.CurSpeed]) +

  ' 耗时:' + FormatDateTime('hh:nn:ss', FMultiPartHTTP.ElapsedTime);

三、,ICS进度条有关的事件

下面2个事件和进度条有关,ICS自带了个下载进度条

HTTPProgressAddSegment(Sender: TObject; StartOffset, ASpan, InitPos: Int64);

ASpan分段大小,InitPos分段开始大小, StartOffset,分段开始大小

HTTPProgressSetPosition(Sender: TObject;Index: Integer; Position: Int64);

Index第几个分段 Position 分段已下载的大小

四、用法示例:

    FMultiPartHTTP.URL:=下载文件地址;

    FMultiPartHTTP.PartCount:=分块个数;

    FMultiPartHTTP.FileStream:=TFileStream.Create('下载本地文件名',fmCreate);

    FMultiPartHTTP.Start;




转载于:https://my.oschina.net/u/582827/blog/299786

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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 事件通知
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值