gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:48:35 25 4
gpt4 key购买 nike

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

鉴于此代码,DELETE 是否总是在 COPY 完成后开始?

await destinationCloudFile.StartCopyAsync(sourceCloudFile);
await sourceCloudFile.DeleteAsync();

我很困惑,因为 StartCopyAsyc 中的 Start 这个词......就像......它将开始复制或其他东西...... .

此外,我没有执行 Task.WhenAll(这两个任务) ...我认为它会尝试同时执行这些任务。

编辑

这是一个重命名,因此实际上,它将复制新文件紧邻原始文件:相同的共享、相同的容器、相同的目录..当然,所有这些都在相同的存储帐户。

最佳答案

如果您只是重命名文件,那么您使用的代码应该可以正常工作。重命名本质上是在同一共享/目录中复制文件,然后删除。该复制操作是同步的。

<小时/>

但是,如果您要跨存储帐户复制文件,则复制操作是异步的,您必须等待复制操作完成,然后才能对源文件执行任何进一步操作(例如您想要执行 移动操作)

对于异步复制操作,当以下代码完成执行且没有任何错误时:

await destinationCloudFile.StartCopyAsync(sourceCloudFile); 

这意味着您复制 blob 的请求已被存储服务接受并已排队。通常复制发生得非常快,但不能保证。

您需要做的是定期检查复制操作是否已完成。您可以通过获取目标文件的属性来检查复制操作状态来完成此操作。

出于某种原因,我认为这会在存储客户端库中公开(我检查了版本 7.0.0),但它不存在:(。但是您可以通过 Get File Properties REST API 获取此信息。您可以检查x-ms-copy-status 响应 header (pendingsuccessabortedfailed)。

编辑:在存储客户端 sdk(版本 8.1.4)上,有一个属性 CopyState 您可以检查副本的状态

关于c# - 复制然后删除 Azure 文件时,删除是否总是在复制完成后开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42549420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com