c# - 使用 DownloadToFileParallelAsync 跟踪更改
问题描述
当前使用 Microsoft.Azure.Storage.DataMovement 库下载文件 > 10GB。发现 DownloadToFileParallelAsync 对我来说是最快的,而无需使用 Azcopy。该库运行良好,速度相当快,但无法从中获取任何进度信息。
我试过的东西:
1.) 使用 OperationContext 抓取发送/接收,但它们似乎不一致。
2.)使用带有多个线程的 DownloadRangeToStreamAsync 下载附加到进度处理程序(不那么快)
3.)使用 FileWatcher 尝试在下载过程中跟踪文件大小变化,但这不起作用,因为似乎 DownloadToFileParallelAsync 保留了整个文件大小磁盘所以大小不会改变。
问题,还有其他方法可以跟踪进度吗?
解决方案
根据微软文件 DownloadToFileParallelAsync -
通过发出并行请求,启动异步操作以将 blob 的内容下载到文件中。
但是目前在使用 DownloadToFileParallelAsync 下载大文件时没有任何其他选项可以跟踪进度。它也没有像 DownloadToFileAsync 那样提供 Progress 参数,可用于获取下载进度。
现在,您可以使用DownloadRangeToStreamAsync作为一种解决方法来解决跟踪下载进度的问题。使用 DownloadRangeToStreamAsync 将大 blob 文件分成更小的块,然后您可以在客户端将它们组合起来。检查@PhullivanCuriious 的这个答案以获得更多理解。虽然它与 DownloadToFileParallelAsync 相比要慢一些,其中文件的多个“切片”是并行下载的(同时)。
推荐阅读
- python - XGBoost 的 ndcg 目标函数中的标签格式
- python-3.x - p2p文件共享python
- java - 如何在同一时间检测方法发布中的重复请求
- php - 存储在数据库中的 Laravel Eloquent 浮点值返回了额外的数字
- python - 按下空格时让精灵出现并在X秒后消失?
- python - 使用 ruby 根据目录名称创建文件并根据 Chef 中的远程目录名称创建目录
- javascript - 在 JavaScript 中比较不同格式的日期
- c# - WPF 验证错误一直存在,直到控制失去焦点
- matlab - Matlab:使用匿名函数求解二阶 ODE
- command-line-arguments - FluidSynth 的命令行混响参数