ReaderWriterLockSlim.EnterWriteLock 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.
public:
void EnterWriteLock();
public void EnterWriteLock();
member this.EnterWriteLock : unit -> unit
Public Sub EnterWriteLock ()
Pengecualian
Properti RecursionPolicy adalah NoRecursion dan utas saat ini telah memasuki kunci dalam mode apa pun.
-atau-
Utas saat ini telah memasuki mode baca dan belum memiliki kunci tulis, jadi mencoba memasukkan kunci dalam mode tulis akan membuat kemungkinan kebuntuan.
-atau-
Jumlah rekursi akan melebihi kapasitas penghitung. Batasnya sangat besar sehingga aplikasi tidak boleh menemukannya.
Objek ReaderWriterLockSlim telah dibuang.
Contoh
Contoh berikut menunjukkan cara menggunakan EnterWriteLock metode untuk memasukkan kunci dalam mode tulis. Metode yang ditunjukkan dalam contoh menambahkan pasangan kunci/nilai baru ke cache yang disinkronkan. 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 pemanggil keluar dari mode tulis.
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 void Add(int key, string value)
{
cacheLock.EnterWriteLock();
try
{
innerCache.Add(key, value);
}
finally
{
cacheLock.ExitWriteLock();
}
}
Public Sub Add(ByVal key As Integer, ByVal value As String)
cacheLock.EnterWriteLock()
Try
innerCache.Add(key, value)
Finally
cacheLock.ExitWriteLock()
End Try
End Sub
Keterangan
Metode ini memblokir hingga utas panggilan memasuki kunci, dan karenanya mungkin tidak pernah kembali. TryEnterWriteLock Gunakan metode untuk memblokir interval tertentu, lalu kembalikan jika utas panggilan belum memasuki mode tulis selama interval tersebut.
Jika utas lain telah memasuki kunci dalam mode baca, utas EnterWriteLock yang memanggil blok metode hingga utas tersebut keluar dari mode baca. Ketika ada utas yang menunggu untuk memasuki mode tulis, utas tambahan yang mencoba memasukkan mode baca atau blok mode yang dapat ditingkatkan sampai semua utas yang menunggu untuk memasuki mode tulis telah kehabisan waktu atau memasuki mode tulis lalu keluar darinya.
Note
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.