如果blob.upload超过60秒,请续订blob租约

Viv*_*sra 2 timeout azure blobs azure-storage-blobs

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

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

如果uploadBtyeArray时间因文件大小而异.如何在上传完成之前继续续订租约.

此致,Vivek

San*_*tia 8

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

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

            renewalThread = new Thread(() =>
            {
                while (true)
                {
                    Thread.Sleep(TimeSpan.FromSeconds(40));
                    blob.RenewLease(leaseId);
                }
            });
            renewalThread.Start();
Run Code Online (Sandbox Code Playgroud)