2

我知道我们可以在 blob 上获得 60 秒或无限的租约。对于以下代码:

  var account = CloudStorageAccount.DevelopmentStorageAccount;
  var blob = account.CreateCloudBlobClient().GetBlobReference("container/blob");
  var leaseId = blob.AcquireLease();
  blob.UploadByteArray(bytes);
  blob.ReleaseLease(leaseId);

如果 uploadBtyeArray 时间因文件大小而异。我如何继续更新租约直到上传完成。

问候, 维维克

4

1 回答 1

8

调用后,AcquireLease您可以启动一个新线程,该线程在租约到期之前不断更新租约。上传完成后,您应该简单地中止执行自动更新的线程。

您可能想查看 Steve Marx 的 WazStorageExtensions,它带有AutoRenewLease类(查看 DoOnce 方法)。在内部,AutoRenewLease该类使用这样的线程来保持租约:

            renewalThread = new Thread(() =>
            {
                while (true)
                {
                    Thread.Sleep(TimeSpan.FromSeconds(40));
                    blob.RenewLease(leaseId);
                }
            });
            renewalThread.Start();
于 2012-10-05T11:05:55.500 回答