Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 复制然后删除Azure文件时,是否总是在复制完成后开始删除?_C#_.net_Azure_Azure Storage Files - Fatal编程技术网

C# 复制然后删除Azure文件时,是否总是在复制完成后开始删除?

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一词。。。喜欢它将要开始复制或其他什么 另外,我没有做任务。当所有(这两个任务)。。。我想这是在同一时间做的 重要编

我正在尝试重命名Azure文件。 为此,我们必须先复制,然后删除(因为没有重命名API)

给定此代码,删除是否总是在复制完成后开始

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文件
:)。无论如何,我已经更新了我的答案。我把异步部分放在那里,以防有人试图通过存储帐户移动文件。太好了!所以这意味着我不必担心:)仍然觉得奇怪怎么。。我正在得到我的“请你复制一下这个”结果的值。。对…'现在就复制这个。