ReaderWriterLockSlim.TryEnterWriteLock Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İsteğe bağlı bir zaman aşımı ile yazma modunda kilidi girmeye çalışır.
Aşırı Yüklemeler
TryEnterWriteLock(Int32) |
İsteğe bağlı bir zaman aşımı ile yazma modunda kilidi girmeye çalışır. |
TryEnterWriteLock(TimeSpan) |
İsteğe bağlı bir zaman aşımı ile yazma modunda kilidi girmeye çalışır. |
TryEnterWriteLock(Int32)
- Kaynak:
- ReaderWriterLockSlim.cs
- Kaynak:
- ReaderWriterLockSlim.cs
- Kaynak:
- ReaderWriterLockSlim.cs
İsteğe bağlı bir zaman aşımı ile yazma modunda kilidi girmeye çalışır.
public:
bool TryEnterWriteLock(int millisecondsTimeout);
public bool TryEnterWriteLock (int millisecondsTimeout);
member this.TryEnterWriteLock : int -> bool
Public Function TryEnterWriteLock (millisecondsTimeout As Integer) As Boolean
Parametreler
- millisecondsTimeout
- Int32
Beklenen milisaniye sayısı veya süresiz olarak beklemek için -1 (Infinite).
Döndürülenler
true
çağıran iş parçacığı yazma moduna girdiyse, değilse, false
.
Özel durumlar
RecursionPolicy özelliğidir NoRecursion ve geçerli iş parçacığı zaten kilide girmiştir.
-veya-
Geçerli iş parçacığı başlangıçta kilidi okuma moduna girdi ve bu nedenle yazma moduna girmeye çalışmak kilitlenme olasılığına neden olabilir.
-veya-
Özyineleme numarası sayacın kapasitesini aşabilir. Sınır o kadar büyük ki uygulamalar hiçbir zaman bu sınırla karşılaşmamalıdır.
değeri millisecondsTimeout
negatiftir, ancak izin verilen tek negatif değer olan (-1) değerine eşit Infinite değildir.
ReaderWriterLockSlim Nesnesi atılmış.
Örnekler
Aşağıdaki örnekte, yazma moduna kilit girmek için yönteminin zaman aşımı ile nasıl kullanılacağı TryEnterWriteLock gösterilmektedir. Örnekte gösterilen yöntem, eşitlenen önbelleğe yeni bir anahtar/değer çifti ekler. Belirtilen zaman aşımı aralığı iş parçacığı kilidi girmeden önce geçtiğinde yöntemi döndürür false
. anahtar/değer çifti eklenirse yöntemi döndürür true
.
Anahtar zaten önbellekteyse, iç Dictionary<TKey,TValue> tarafından oluşan özel durumun yöntemi sonlandırmasına izin verilir.
finally
Yöntemini yürütmek ExitWriteLock için çağıranın kilitlerden çıkmasını sağlayan bir blok kullanılır.
Bu kod, sınıfı için ReaderWriterLockSlim sağlanan daha büyük bir örneğin parçasıdır.
private ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim();
private Dictionary<int, string> innerCache = new Dictionary<int, string>();
Private cacheLock As New ReaderWriterLockSlim()
Private innerCache As New Dictionary(Of Integer, String)
public bool AddWithTimeout(int key, string value, int timeout)
{
if (cacheLock.TryEnterWriteLock(timeout))
{
try
{
innerCache.Add(key, value);
}
finally
{
cacheLock.ExitWriteLock();
}
return true;
}
else
{
return false;
}
}
Public Function AddWithTimeout(ByVal key As Integer, ByVal value As String, _
ByVal timeout As Integer) As Boolean
If cacheLock.TryEnterWriteLock(timeout) Then
Try
innerCache.Add(key, value)
Finally
cacheLock.ExitWriteLock()
End Try
Return True
Else
Return False
End If
End Function
Açıklamalar
0 (sıfır) ise millisecondsTimeout
, bu yöntem kilit durumunu denetler ve istenen durum kullanılamıyorsa hemen döndürür false
.
Diğer iş parçacıkları kilit okuma moduna girmişse, bu iş parçacıkları okuma modundan TryEnterWriteLock çıkana veya zaman aşımı süresi geçene kadar yöntemini çağıran bir iş parçacığı blokları. Yazma moduna girmek için bekleyen iş parçacıkları engellenirken, yazma moduna girmeyi bekleyen tüm iş parçacıkları zaman aşımına uğradı veya yazma moduna girdikten sonra bu moddan çıkana kadar okuma moduna veya yükseltilebilir mod bloğuna girmeye çalışan ek iş parçacıkları.
Not
Kilit özyinelemeye izin veriyorsa, yazma modunda kilide giren bir iş parçacığı, diğer iş parçacıkları yazma moduna girmeyi bekliyor olsa bile yinelemeli olarak yazma moduna girebilir.
Şunlara uygulanır
TryEnterWriteLock(TimeSpan)
- Kaynak:
- ReaderWriterLockSlim.cs
- Kaynak:
- ReaderWriterLockSlim.cs
- Kaynak:
- ReaderWriterLockSlim.cs
İsteğe bağlı bir zaman aşımı ile yazma modunda kilidi girmeye çalışır.
public:
bool TryEnterWriteLock(TimeSpan timeout);
public bool TryEnterWriteLock (TimeSpan timeout);
member this.TryEnterWriteLock : TimeSpan -> bool
Public Function TryEnterWriteLock (timeout As TimeSpan) As Boolean
Parametreler
- timeout
- TimeSpan
Beklenen süre veya süresiz olarak beklemek için -1 milisaniye.
Döndürülenler
true
çağıran iş parçacığı yazma moduna girdiyse, değilse, false
.
Özel durumlar
RecursionPolicy özelliğidir NoRecursion ve geçerli iş parçacığı zaten kilide girmiştir.
-veya-
Geçerli iş parçacığı başlangıçta kilidi okuma moduna girdi ve bu nedenle yazma moduna girmeye çalışmak kilitlenme olasılığına neden olabilir.
-veya-
Özyineleme numarası sayacın kapasitesini aşabilir. Sınır o kadar büyük ki uygulamalar hiçbir zaman bu sınırla karşılaşmamalıdır.
değeri timeout
negatiftir, ancak izin verilen tek negatif değer olan -1 milisaniyeye eşit değildir.
-veya-
değeri timeout
Int32.MaxValue milisaniyeden büyüktür.
ReaderWriterLockSlim Nesnesi atılmış.
Açıklamalar
0 (sıfır) ise timeout
, bu yöntem kilit durumunu denetler ve istenen durum kullanılamıyorsa hemen döndürür false
.
Diğer iş parçacıkları kilit okuma moduna girmişse, bu iş parçacıkları okuma modundan TryEnterWriteLock çıkana veya zaman aşımı süresi geçene kadar yöntemini çağıran bir iş parçacığı blokları. Yazma moduna girmek için bekleyen iş parçacıkları engellenirken, yazma moduna girmeyi bekleyen tüm iş parçacıkları zaman aşımına uğradı veya yazma moduna girdikten sonra bu moddan çıkana kadar okuma moduna veya yükseltilebilir mod bloğuna girmeye çalışan ek iş parçacıkları.
Not
Kilit özyinelemeye izin veriyorsa, yazma modunda kilide giren bir iş parçacığı, diğer iş parçacıkları yazma moduna girmeyi bekliyor olsa bile yinelemeli olarak yazma moduna girebilir.