ReaderWriterLockSlim.TryEnterWriteLock Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mencoba memasukkan kunci dalam mode tulis, dengan batas waktu opsional.
Overload
TryEnterWriteLock(Int32) |
Mencoba memasukkan kunci dalam mode tulis, dengan batas waktu opsional. |
TryEnterWriteLock(TimeSpan) |
Mencoba memasukkan kunci dalam mode tulis, dengan batas waktu opsional. |
TryEnterWriteLock(Int32)
- Sumber:
- ReaderWriterLockSlim.cs
- Sumber:
- ReaderWriterLockSlim.cs
- Sumber:
- ReaderWriterLockSlim.cs
Mencoba memasukkan kunci dalam mode tulis, dengan batas waktu opsional.
public:
bool TryEnterWriteLock(int millisecondsTimeout);
public bool TryEnterWriteLock (int millisecondsTimeout);
member this.TryEnterWriteLock : int -> bool
Public Function TryEnterWriteLock (millisecondsTimeout As Integer) As Boolean
Parameter
- millisecondsTimeout
- Int32
Jumlah milidetik untuk menunggu, atau -1 (Infinite) untuk menunggu tanpa batas waktu.
Mengembalikan
true
jika utas panggilan memasuki mode tulis, jika tidak, false
.
Pengecualian
Properti RecursionPolicy adalah NoRecursion dan utas saat ini telah memasukkan kunci.
-atau-
Utas saat ini awalnya memasuki kunci dalam mode baca, dan karenanya mencoba memasuki mode tulis akan menciptakan kemungkinan kebuntuan.
-atau-
Jumlah rekursi akan melebihi kapasitas penghitung. Batasnya sangat besar sehingga aplikasi tidak boleh menemukannya.
Nilai millisecondsTimeout
negatif, tetapi tidak sama dengan Infinite (-1), yang merupakan satu-satunya nilai negatif yang diizinkan.
Objek ReaderWriterLockSlim telah dibuang.
Contoh
Contoh berikut menunjukkan cara menggunakan TryEnterWriteLock metode untuk memasukkan kunci dalam mode tulis, dengan waktu habis. Metode yang ditunjukkan dalam contoh menambahkan pasangan kunci/nilai baru ke cache yang disinkronkan. Jika interval waktu habis yang ditentukan berlalu sebelum utas memasuki kunci, metode akan mengembalikan false
. Metode mengembalikan true
jika pasangan kunci/nilai ditambahkan.
Jika kunci sudah ada di cache, pengecualian yang dilemparkan oleh bagian dalam Dictionary<TKey,TValue> diizinkan untuk mengakhiri metode .
finally
Blok digunakan untuk menjalankan ExitWriteLock metode , memastikan bahwa penelepon keluar dari kunci.
Kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk ReaderWriterLockSlim kelas .
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
Keterangan
Jika millisecondsTimeout
adalah 0 (nol), metode ini memeriksa status kunci dan segera kembali false
jika status yang diinginkan tidak tersedia.
Jika utas lain telah memasuki kunci dalam mode baca, utas TryEnterWriteLock yang memanggil blok metode hingga utas tersebut keluar dari mode baca atau hingga interval waktu habis berlalu. Saat utas diblokir menunggu untuk memasuki mode tulis, utas tambahan yang mencoba memasukkan mode baca atau blok mode yang dapat ditingkatkan hingga semua utas yang menunggu untuk memasuki mode tulis telah kehabisan waktu atau memasuki mode tulis lalu keluar darinya.
Catatan
Jika kunci memungkinkan rekursi, utas yang telah memasuki kunci dalam mode tulis dapat memasuki mode tulis secara rekursif, bahkan jika utas lain menunggu untuk memasuki mode tulis.
Berlaku untuk
TryEnterWriteLock(TimeSpan)
- Sumber:
- ReaderWriterLockSlim.cs
- Sumber:
- ReaderWriterLockSlim.cs
- Sumber:
- ReaderWriterLockSlim.cs
Mencoba memasukkan kunci dalam mode tulis, dengan batas waktu opsional.
public:
bool TryEnterWriteLock(TimeSpan timeout);
public bool TryEnterWriteLock (TimeSpan timeout);
member this.TryEnterWriteLock : TimeSpan -> bool
Public Function TryEnterWriteLock (timeout As TimeSpan) As Boolean
Parameter
- timeout
- TimeSpan
Interval untuk menunggu, atau -1 milidetik untuk menunggu tanpa batas waktu.
Mengembalikan
true
jika utas panggilan memasuki mode tulis, jika tidak, false
.
Pengecualian
Properti RecursionPolicy adalah NoRecursion dan utas saat ini telah memasukkan kunci.
-atau-
Utas saat ini awalnya memasuki kunci dalam mode baca, dan karenanya mencoba memasuki mode tulis akan menciptakan kemungkinan kebuntuan.
-atau-
Jumlah rekursi akan melebihi kapasitas penghitung. Batasnya sangat besar sehingga aplikasi tidak boleh menemukannya.
Nilai timeout
negatif, tetapi tidak sama dengan -1 milidetik, yang merupakan satu-satunya nilai negatif yang diizinkan.
-atau-
Nilai timeout
lebih besar dari Milidetik Int32.MaxValue .
Objek ReaderWriterLockSlim telah dibuang.
Keterangan
Jika timeout
adalah 0 (nol), metode ini memeriksa status kunci dan segera kembali false
jika status yang diinginkan tidak tersedia.
Jika utas lain telah memasuki kunci dalam mode baca, utas TryEnterWriteLock yang memanggil blok metode hingga utas tersebut keluar dari mode baca atau hingga interval waktu habis berlalu. Saat utas diblokir menunggu untuk memasuki mode tulis, utas tambahan yang mencoba memasukkan mode baca atau blok mode yang dapat ditingkatkan hingga semua utas yang menunggu untuk memasuki mode tulis telah kehabisan waktu atau memasuki mode tulis lalu keluar darinya.
Catatan
Jika kunci memungkinkan rekursi, utas yang telah memasuki kunci dalam mode tulis dapat memasuki mode tulis secara rekursif, bahkan jika utas lain menunggu untuk memasuki mode tulis.