Bahasa

ReaderWriterLockSlim.ExitReadLock Metode

Definisi

Mengurangi jumlah rekursi untuk mode baca, dan keluar dari mode baca jika jumlah yang dihasilkan adalah 0 (nol).

public:
 void ExitReadLock();
public void ExitReadLock();
member this.ExitReadLock : unit -> unit
Public Sub ExitReadLock ()

Pengecualian

Utas saat ini belum memasuki kunci dalam mode baca.

Contoh

Contoh berikut menunjukkan cara menggunakan finally blok untuk menjalankan ExitReadLock metode , memastikan bahwa penelepon keluar dari mode baca. Metode yang ditunjukkan dalam contoh mengambil nilai yang terkait dengan kunci. Jika kunci tidak ditemukan, pengecualian yang dilemparkan oleh bagian dalam Dictionary<TKey,TValue> diizinkan untuk mengakhiri metode . Metode EnterReadLock ini digunakan untuk memasuki mode baca.

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 string Read(int key)
{
    cacheLock.EnterReadLock();
    try
    {
        return innerCache[key];
    }
    finally
    {
        cacheLock.ExitReadLock();
    }
}
Public Function Read(ByVal key As Integer) As String
    cacheLock.EnterReadLock()
    Try
        Return innerCache(key)
    Finally
        cacheLock.ExitReadLock()
    End Try
End Function

Keterangan

Metode ini tidak sensitif terhadap urutan rekursi. Misalnya, jika utas memasukkan kunci dalam mode yang dapat ditingkatkan dan kemudian memasuki kunci dalam mode baca, urutan keluarnya utas dari dua mode tidak masalah. Jika kunci memungkinkan rekursi, utas dapat memasukkan kunci dalam mode tulis lalu memasukkannya secara rekursif dalam mode baca; urutan di mana utas keluar dari mode baca dan mode tulis tidak masalah.

Keluar dari kunci mungkin menandakan utas tunggu lainnya.

Berlaku untuk