我知道我们可以在blob上获得60秒或无限的租约。对于以下代码:
var account = CloudStorageAccount.DevelopmentStorageAccount;
var blob = account.CreateCloudBlobClient().GetBlobReference("container/blob");
var leaseId = blob.AcquireLease();
blob.UploadByteArray(bytes);
blob.ReleaseLease(leaseId);
如果uploadBtyeArray时间因文件大小而异。如何在上传完成之前不断续订租约。
此致 的Vivek
答案 0 :(得分:8)
在调用AcquireLease
之后,您可以启动一个新线程,该线程在到期之前不断续订租约。上传完成后,您应该简单地中止执行自动续订的线程。
你可能想看一下Steve Marx的WazStorageExtensions,它附带一个AutoRenewLease类(查看DoOnce方法)。在内部,AutoRenewLease
类使用这样的线程来保持租约:
renewalThread = new Thread(() =>
{
while (true)
{
Thread.Sleep(TimeSpan.FromSeconds(40));
blob.RenewLease(leaseId);
}
});
renewalThread.Start();