Ana içeriğe geç

Kilit

Belirtilen anahtar için kilit edinmeye çalışır ve kilit edinilene kadar engeller.

1
$Cache.Lock(key: string):( string | `"null"` )

Belirtilen anahtar için kilit edinmeye çalışır ve kilit edinilene veya zaman aşımı süresi dolana kadar belirtilen süre boyunca engeller.

1
$Cache.Lock(key: string, blockingTimeout: string, duration?: string, tryLockInterval?: string):( string | `"null"` )

Parametreler

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

string blockingTimeout
    Kilit için "hh:mm:ss" biçiminde beklenecek süre. Varsayılan değer 60 saniyedir.

string duration optional

string tryLockInterval optional

Döndürür

Başarılı olursa edinilen kilit belirteci; aksi takdirde null. Başarılı olursa edinilen kilit belirteci; aksi takdirde null.

Notlar

Bu yöntem, paylaşımlı anahtar boşalana veya zaman aşımına ulaşılana kadar otomatik olarak bekleme durumuna geçer. Beklemek istemiyorsanız bunun yerine şu yöntemi kullanın: $Cache.TryLock .

Edinilen kilitler her zaman oluşturulan belirteç değeriyle şu yöntem kullanılarak serbest bırakılmalıdır: $Cache.ReleaseLock . Belirteç sahipliği kanıtlar; farklı bir belirteç kilidi serbest bırakamaz. Aksi takdirde kilit, yapılandırılan süre veya sağlayıcının varsayılan süresi dolana kadar tutulur.

Kilit edinmeye çalışmak, gerekirse beklemek ve işlem tamamlandıktan sonra kilidi serbest bırakmak

1
2
3
4
5
6
7
var tokenValue = $Cache.Lock('mylock');
try {
  // Locked code block
}
finally{
  $Cache.ReleaseLock('mylock',tokenValue);
}
Bu yöntem, paylaşımlı anahtar boşalana veya zaman aşımına ulaşılana kadar otomatik olarak bekleme durumuna geçer. Beklemek istemiyorsanız bunun yerine şu yöntemi kullanın: $Cache.TryLock .

Edinilen kilitler her zaman oluşturulan belirteç değeriyle şu yöntem kullanılarak serbest bırakılmalıdır: $Cache.ReleaseLock . Belirteç sahipliği kanıtlar; farklı bir belirteç kilidi serbest bırakamaz. Aksi takdirde kilit, yapılandırılan süre veya sağlayıcının varsayılan süresi dolana kadar tutulur.

Kilit zaten tutuluyorsa 30 saniye bekleme

1
2
3
4
5
6
7
8
// Wait for 30 seconds if already locked
var tokenValue = $Cache.Lock('mylock', '00:00:30');
try {
  // Locked code block
}
finally {
  $Cache.ReleaseLock('mylock',tokenValue);
}

Ayrıca bkz.