RouteCollection.GetReadLock 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.
Menyediakan objek untuk mengelola keamanan utas saat Anda mengambil objek dari koleksi.
public:
IDisposable ^ GetReadLock();
public IDisposable GetReadLock ();
member this.GetReadLock : unit -> IDisposable
Public Function GetReadLock () As IDisposable
Mengembalikan
Objek yang mengelola keamanan utas.
Contoh
Contoh berikut menunjukkan cara menggunakan GetReadLock metode saat Anda mengambil rute saat aplikasi berjalan. Pernyataan ini Using
memastikan bahwa apa pun yang terjadi pada durasi ketika Anda membaca dari koleksi (apakah kode selesai secara normal atau pengecualian dilemparkan) kunci akan dilepaskan dengan aman di akhir Using
blok kode.
Keterangan
Objek RouteCollection tersedia untuk beberapa proses dalam aplikasi. Oleh karena itu, jika Anda harus mengambil rute saat aplikasi berjalan, gunakan GetReadLock metode untuk menjamin keamanan utas. Dengan mendapatkan kunci baca pada koleksi rute, Anda memastikan bahwa koleksi tidak akan dimodifikasi saat Anda mencoba mengambilnya.
Metode GetReadLock ini menghentikan utas agar tidak berlanjut sampai kunci dapat diperoleh. Jika kunci tulis di tempat, utas menunggu hingga pembaruan selesai dan kunci tulis dilepaskan. Kunci baca pada koleksi rute dirilis ketika IDisposable objek yang dikembalikan oleh metode ini dibuang.
Jika Anda tidak menggunakan GetReadLock, Anda mungkin mendapatkan kesalahan saat membaca koleksi RouteCollection . Misalnya, Anda mengulangi objek dalam RouteCollection koleksi untuk membacanya, tanpa memanggil GetReadLock. Saat Anda melakukan itu, utas lain dari permintaan lain mungkin memanggil GetWriteLock dan menambahkan rute ke koleksi. Utas pertama kemudian akan gagal dengan kesalahan.
Ada dua skenario di mana Anda tidak perlu memanggil GetReadLock:
Metode RouteCollection publik kelas seperti GetVirtualPath dan GetRouteData panggil GetReadLock secara internal. Oleh karena itu, Anda tidak perlu secara eksplisit memanggil GetReadLock ketika Anda memanggil metode RouteCollection publik kelas untuk mengambil data dari koleksi.
Ketika aplikasi dimulai dan belum memproses permintaan, seperti di penanganan
Application_Start
aktivitas, hanya satu utas yang berjalan. Karena tidak ada utas lain yang mungkin memperbarui koleksi saat Anda membacanya, Anda tidak perlu memanggil GetReadLock.
Berlaku untuk
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk