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 の時間がファイル サイズによって異なる場合、アップロードが完了するまでリースを更新し続けるにはどうすればよいですか。

よろしく、 Vivek

4

1 に答える 1

8

呼び出した後AcquireLease、期限が切れる直前にリースを常に更新する新しいスレッドをスピンアップできます。アップロードが完了したら、自動更新を行うスレッドを中止するだけです。

AutoRenewLeaseクラスが付属している Steve Marx による WazStorageExtensions を参照してください(DoOnce メソッドを参照)。内部的には、AutoRenewLeaseクラスはそのようなスレッドを使用してリースを維持します。

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