Ana içeriğe geç

LockAsync

Beklerken komut yürütme iş parçacığını engellemeden kilit edinmeye zaman uyumsuz olarak çalışır.

1
$Cache.LockAsync(key: string, blockingTimeout?: string, duration?: string, tryLockInterval?: string):Promise<( string | `"null"` )>

Parametreler

string key
    Paylaşımlı erişim için benzersiz bir tanımlayıcı olan kilit anahtarı.

string blockingTimeout optional
    "hh:mm:ss" biçiminde en fazla beklenecek süre. Varsayılan değer 60 saniyedir.

string duration optional
    "hh:mm:ss" biçimindeki kilit ömrü.

string tryLockInterval optional
    Edinme denemeleri arasındaki "hh:mm:ss" biçimindeki aralık.

Döndürür

Edinilen belirteci içeren bir promise veya zaman aşımı süresi dolduğunda null.

Notlar

Eşzamansız komut dizilerinde bunun yerine şu yöntemi tercih edin: $Cache.Lock .

Edinilen kilidi her zaman serbest bırakarak 30 saniyeye kadar zaman uyumsuz bekleme

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
var tokenValue = await $Cache.LockAsync('mylock', '00:00:30');
if (tokenValue == null) {
  // The lock was not available before the timeout expired
} else {
  try {
    // Locked code block
  }
  finally {
    await $Cache.ReleaseLockAsync('mylock', tokenValue);
  }
}

Bekleme süresini, kilit ömrünü ve edinme denemeleri arasındaki aralığı yapılandırma

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
var tokenValue = await $Cache.LockAsync(
  'report-generation',
  '00:00:10', // Wait for up to 10 seconds
  '00:02:00', // Keep the lock for up to 2 minutes
  '00:00:01'  // Retry every second
);

if (tokenValue != null) {
  try {
    // Generate the shared report
  }
  finally {
    await $Cache.ReleaseLockAsync('report-generation', tokenValue);
  }
}

Ayrıca bkz.