【问题标题】:Track changes using DownloadToFileParallelAsync使用 DownloadToFileParallelAsync 跟踪更改
【发布时间】:2021-12-19 16:05:52
【问题描述】:

当前使用 Microsoft.Azure.Storage.DataMovement 库下载文件 > 10GB。发现 DownloadToFileParallelAsync 对我来说是最快的,而无需使用 Azcopy。该库运行良好,速度相当快,但无法从中获取任何进度信息。

我尝试过的方法:

1.) 使用 OperationContext 抓取发送/接收,但它们似乎不一致。
2.) 使用带有多个线程的 DownloadRangeToStreamAsync 下载附加到进度处理程序(不那么快)
3.) 使用 FileWatcher 尝试在下载过程中跟踪文件大小的变化,但这不起作用,因为 DownloadToFileParallelAsync 似乎将整个文件大小保留在磁盘上,因此大小不会改变。

问题,有没有其他方法可以跟踪进度?

【问题讨论】:

    标签: c# azure blob azcopy


    【解决方案1】:

    根据微软文档 DownloadToFileParallelAsync -

    通过发出并行请求启动异步操作以将 blob 的内容下载到文件中。

    但目前在使用 DownloadToFileParallelAsync 下载大文件时没有任何其他选项可以跟踪进度。它也没有像 DownloadToFileAsync 那样提供 Progress 参数,可用于获取下载进度。

    现在您可以使用 DownloadRangeToStreamAsync 作为解决方法来解决跟踪下载进度的问题。 使用 DownloadRangeToStreamAsync 将大 blob 文件分成更小的块,然后您可以在客户端将它们组合起来。检查@PhullivanCuriious 的answer 以获得更多理解。虽然它与 DownloadToFileParallelAsync 相比要慢一些,后者是并行(同时)下载文件的多个“切片”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多