[英]How can I tell when CopyDirectoryAsync from Microsoft.WindowsAzure.Storage.DataMovement.TransferManager has finished?
我正在尝试将许多容器从一个Azure Blob存储帐户复制到另一个Blob存储帐户。
我正在将Microsoft.WindowsAzure.Storage.DataMovement
库用于C#和TransferManager.CopyDirectoryAsync
方法。
我发现所有容器都没有问题,但是当我尝试复制容器时,没有收到关于已复制的Blob的反馈。 我想复制数百万个Blob,因此需要完成时的反馈。 我正在使用异步服务器端副本,IE isServiceCopy = true
我在打电话
return await TransferManager.CopyDirectoryAsync(sourceDirectory,
destinationDirectory, true, options, null).ConfigureAwait(false);
由于我正在等待,因此我希望它不会在复制完成之前从这一行通过。 但是它几乎立即通过,如果我检查TransferStatus
结果上的NumberOfFilesTransferred
,则它始终为0
。 即使我在while循环中反复检查结果,该数字也不会从0
更改。 但是,如果我签入Azure门户,则所有期望的文件都已成功复制。
我也尝试过在DirectoryTransferContext
上设置ProgressHandler
,它被调用了几次,但是所有属性均为0
。
有谁知道为什么我没有从副本中得到任何反馈?
提前致谢。 克里斯
这是不正确的:
CloudBlobDirectory sourceDirectory = sourceContainer.GetDirectoryReference(".");
CloudBlobDirectory destinationDirectory = destinationContainer.GetDirectoryReference(".");
请注意,Azure Blob存储没有真正的文件夹层次结构,此处的参数实际上是Blob容器中Blob的前缀。 因此,请将代码更改为:
CloudBlobDirectory sourceDirectory = sourceContainer.GetDirectoryReference(string.Empty);
CloudBlobDirectory destinationDirectory = destinationContainer.GetDirectoryReference(string.Empty);
您可以轮询Blob的CopyState 。 有关详细信息,请参见https://stackoverflow.com/a/42255582
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.