测试开源下载模块Downloader

  微信公众号“DotNet”的文章《.NET 异步、跨平台、支持分段下载的开源项目 》(参考文献1)介绍了GitHub中的开源下载模块Downloader的基本用法,本文学习Downloader的主要参数设置方式及基本用法,最后编写简单的测试程序进行文件下载测试。
  新建Winform项目,在NuGet管理器中安装Downloader,如下图所示。

在这里插入图片描述
  Downloader模块中使用DownloadConfiguration类配置下载属性,主要属性如下所示:

序号名称说明
1BufferBlockSize缓冲块大小,int类型,默认值为1024
2CheckDiskSizeBeforeDownload下载文件前检查磁盘空间,bool类型,默认值为true
3ChunkCount分块下载文件时的分块数量,int类型,默认值为1
4MaximumBytesPerSecond最大下载速度,默认值为long.MaxValue
5MaximumSpeedPerChunk单块的最大下载速度,只读属性,如果非并行下载,其值等同MaximumBytesPerSecond,并行下载时,其值为MaximumBytesPerSecond / Math.Min(ChunkCount, ParallelCount)
6MaxTryAgainOnFailover下载失败时的最大尝试次数,int类型,默认值为int.MaxValue
7ParallelDownload是否支持并行下载,bool值,默认为false
8ParallelCount并行下载数数量,int类型,默认值为,配合ParallelDownload 使用
9RangeDownload是否仅下载文件的部分内容,bool类型,默认值为false
10RangeLow/RangeHigh下载部分内容时,设置内容的起止位置,long类型,默认值为0,配合RangeDownload使用
11RequestConfiguration设置请求头信息,RequestConfiguration类型,详细设置见参考文献2
12Timeout设置超时时间(毫秒,millisecond),int类型,默认值为1000
13ClearPackageOnCompletionWithFailure下载失败时清除已下载内容?,bool类型,默认值为false
14MinimumSizeOfChunking分块的最小尺寸,long类型,默认值为512

  Downloader模块中使用DownloadService下载文件(也可以用DownloadBuilder,用法见参考文献2),主要函数、事件等如下所示:

序号名称类型说明
1IsBusy/IsCancelled/
IsPaused/Status
属性获取下载状态
2Package属性存储下载过程信息,支持序列化/反序列化,可用于停止下载后令择时机恢复下载
3DownloadFileCompleted事件下载结束时的事件,在文件下载出错、取消下载和成功下载后触发
4DownloadProgressChanged事件下载进度事件,文件下载过程中触发,通过该事件可以获取总的下载进度、已下载大小、总下载大小、下载速度等信息
5ChunkDownloadProgressChanged文件块的下载进度事件,
6DownloadStarted事件下载开始时的事件
7DownloadFileTaskAsync函数文件异步下载函数
8CancelAsync函数取消文件下载
9Pause函数暂停下载
10Resume函数恢复下载

  根据参考文献1和3中的示例编写了测试程序,程序运行效果如下图所示(代码不再赘述,详见参考文献1和3).
在这里插入图片描述

  还需注意,以下情况Downloader无法分块下载文件,只能采用单文件块方式串行下载文件。
在这里插入图片描述

参考文献:
[1]https://it.sohu.com/a/724279623_121124365
[2]https://github.com/bezzad/Downloader
[3]https://github.com/bezzad/Downloader/blob/master/src/Samples/Downloader.Sample

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值