C# 复制然后删除Azure文件时,是否总是在复制完成后开始删除?
我正在尝试重命名Azure文件。 为此,我们必须先复制,然后删除(因为没有重命名API) 给定此代码,删除是否总是在复制完成后开始C# 复制然后删除Azure文件时,是否总是在复制完成后开始删除?,c#,.net,azure,azure-storage-files,C#,.net,Azure,Azure Storage Files,我正在尝试重命名Azure文件。 为此,我们必须先复制,然后删除(因为没有重命名API) 给定此代码,删除是否总是在复制完成后开始 await destinationCloudFile.StartCopyAsync(sourceCloudFile); await sourceCloudFile.DeleteAsync(); 我很困惑,因为startcopyasysc中的Start一词。。。喜欢它将要开始复制或其他什么 另外,我没有做任务。当所有(这两个任务)。。。我想这是在同一时间做的 重要编
await destinationCloudFile.StartCopyAsync(sourceCloudFile);
await sourceCloudFile.DeleteAsync();
我很困惑,因为startcopyasysc
中的Start
一词。。。喜欢它将要开始复制或其他什么
另外,我没有做任务。当所有(这两个任务)
。。。我想这是在同一时间做的
重要编辑:这是一个重命名,因此实际上,它将复制原始文件旁边的新文件:相同共享、相同容器、相同目录。。当然,它们都在同一个存储帐户中
干杯 如果您只是重命名一个文件,那么您使用的代码应该可以正常工作。重命名实质上是复制同一共享/目录中的文件,然后进行删除。该复制操作是同步的
但是,如果要跨存储帐户复制文件,则复制操作是异步的,您必须等待复制操作完成,然后才能对源文件执行任何进一步的操作(如要执行<代码>移动代码>操作) 对于异步复制操作,当以下代码在没有任何错误的情况下完成执行时:
await destinationCloudFile.StartCopyAsync(sourceCloudFile);
这意味着存储服务已接受复制blob的请求,并已将其排入队列。通常情况下,复制速度很快,但无法保证
您需要做的是定期检查复制操作是否已完成。您可以通过获取目标文件的属性来检查复制操作状态
出于某种原因,我认为这将在存储客户端库中公开(我检查了7.0.0版),但它不在那里:(.但是您可以通过REST API获取此信息。您可以检查x-ms-copy-status
响应头(pending
,success
,中止
或失败
)
编辑:在存储客户端sdk(版本8.1.4)上,有一个属性CopyState,您可以检查副本的状态您可能想阅读此内容:(部分“副本现在是异步的”)还有这个答案:Hi@gaurav-我实际上是在将一个文件从
test.txt
重命名为test.txt.lock
,在同一个容器+目录中。然后它将是同步的。对不起,应该仔细阅读这个问题:)。抱歉-我应该明确说明。您做到了…第一行:我正在尝试重命名Azure文件
:)。无论如何,我已经更新了我的答案。我把异步部分放在那里,以防有人试图通过存储帐户移动文件。太好了!所以这意味着我不必担心:)仍然觉得奇怪怎么。。我正在得到我的“请你复制一下这个”结果的值。。对…'现在就复制这个。