[英]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.