来自CloudBlobClient.StartCopyAsync()
函数的documentation
它说
启动异步操作以开始将另一个块blob的内容,属性和元数据复制到此块blob。
我希望知道该过程启动或完成后该函数是否会返回。如果执行这个函数open-sourced?
这是一个部分课程: https://github.com/Azure/azure-storage-net/blob/master/Lib/WindowsRuntime/Blob/CloudBlobClient.cs
答案 0 :(得分:2)
在内部,CloudBlockBlob.StartCopyAsync()
调用Copy Blob REST API。
一旦进程启动,该函数将返回:
在2012-02-12及更高版本中,
Copy Blob
操作可以异步完成。此操作返回可用于检查或中止复制操作的副本ID。 Blob服务以尽力而为的方式复制blob 。复制操作的源blob可以是块blob,附加blob或页面blob或快照。如果目标blob已存在,则它必须与源blob具有相同的blob类型。任何现有的目标blob都将被覆盖。复制操作正在进行时,无法修改目标blob。
在2015-02-21及更高版本中,复制操作的源也可能是Azure文件服务中的文件。如果源是文件,则目标必须是块blob。
以下是调用CloudBlockBlob.StartCopyAsync()
后主动检查复制状态的源代码:
await targetCloudBlob.StartCopyAsync(sourceCloudBlob.Uri);
while (targetCloudBlob.CopyState.Status == CopyStatus.Pending)
{
await Task.Delay(100);
await targetCloudBlob.FetchAttributesAsync();
}
if (targetCloudBlob.CopyState.Status != CopyStatus.Success)
{
Console.WriteLine("Copy failed: {0}", targetCloudBlob.CopyState.Status);
}