测试开源下载模块Downloader

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

测试开源下载模块Downloader_第1张图片
  Downloader模块中使用DownloadConfiguration类配置下载属性,主要属性如下所示:

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

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

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

  根据参考文献1和3中的示例编写了测试程序,程序运行效果如下图所示(代码不再赘述,详见参考文献1和3).
测试开源下载模块Downloader_第2张图片

  还需注意,以下情况Downloader无法分块下载文件,只能采用单文件块方式串行下载文件。
测试开源下载模块Downloader_第3张图片

参考文献:
[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

你可能感兴趣的:(dotnet编程,下载模块,Downloader,C#)