ChangeMonitor Kelas
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 kelas dasar untuk jenis kustom turunan yang memantau perubahan status data yang bergantung pada item cache.
public ref class ChangeMonitor abstract : IDisposable
public abstract class ChangeMonitor : IDisposable
type ChangeMonitor = class
interface IDisposable
Public MustInherit Class ChangeMonitor
Implements IDisposable
- Warisan
-
ChangeMonitor
- Turunan
- Penerapan
Keterangan
Kelas ChangeMonitor ini digunakan sebagai kelas dasar untuk kelas monitor turunan yang dikhususkan untuk implementasi cache tertentu. ChangeMonitor Instans memantau perubahan status data yang bergantung pada item cache. Misalnya, item dapat menjadi file atau entitas data yang kontennya di-cache. Jika file atau entitas data diperbarui, entri cache terkait juga harus diubah. Item umum yang dapat dipantau termasuk entitas data (seperti bidang database, nilai, baris, atau tabel), entri cache lain, serta file dan atribut file.
Perubahan dependensi adalah perubahan status dependensi. Dalam implementasi cache biasa, setelah ChangeMonitor instans memberi tahu cache bahwa dependensi telah berubah, cache melakukan tindakan yang diperlukan, seperti membatalkan entri cache yang disisipkan.
Kelas turunan ChangeMonitor dapat disesuaikan untuk memantau perubahan dependensi untuk penyimpanan data tertentu yang berbeda. Misalnya, ada implementasi cache untuk sistem file, memori fisik, atau database. Kelas ChangeMonitor memeriksa perubahan yang terjadi di luar cache, lalu memperingatkan cache yang telah terjadi perubahan.
.NET Framework mencakup kelas berikut yang berasal dari ChangeMonitor kelas :
Masing-masing kelas ini bekerja dengan berbagai jenis dependensi. Misalnya, kelas turunan FileChangeMonitor memantau perubahan pada cache untuk data sistem file (file dan folder) yang bergantung pada item cache.
Catatan Bagi Implementer
Jika Anda membuat implementasi cache kustom atau jenis monitor perubahan turunan, Anda harus mengikuti panduan tertentu. Daftar berikut ini meringkas panduan ini. Untuk informasi selengkapnya, lihat dokumentasi untuk metode atau properti individual.
Konstruktor kelas turunan harus mengatur UniqueId properti, mulai memantau, dan memanggil InitializationComplete() metode sebelum metode kembali. Jika konstruktor mengalami kesalahan selama konstruksi dan harus membuang sumber daya, konstruktor hanya dapat memanggil Dispose kelebihan beban setelah InitializationComplete() metode dipanggil karena Dispose kelebihan beban akan memberikan InvalidOperationException pengecualian jika inisialisasi tidak selesai.
Jika perubahan terjadi pada data yang sedang dipantau sebelum inisialisasi selesai, konstruktor harus memanggil OnChanged(Object) metode sebelum memanggil InitializationComplete() metode .
Setelah jenis turunan ChangeMonitor dibuat, Anda harus menyisipkan monitor ke dalam implementasi kustom ObjectCache . Atau jika Anda selesai menggunakan monitor perubahan, panggil Dispose metode .
ChangeMonitor Setelah instans dimasukkan ke dalam ObjectCache implementasi, ObjectCache instans mengharuskan monitor perubahan dibuang. Bahkan jika penyisipan tidak valid dan menyebabkan pengecualian, ObjectCache implementasi harus memanggil Dispose kelebihan beban.
Setelah monitor perubahan turunan dimasukkan ke dalam cache, ObjectCache implementasi harus memanggil NotifyOnChanged(OnChangedCallback), dengan meneruskan OnChangedCallback objek. Metode ini NotifyOnChanged(OnChangedCallback) hanya dapat dipanggil satu kali. Jika perubahan dependensi telah terjadi, OnChangedCallback instans akan segera dipanggil ketika NotifyOnChanged(OnChangedCallback) dipanggil. Jika tidak, OnChangedCallback instans hanya akan dipanggil satu kali. Panggilan satu kali ini terjadi baik ketika OnChanged(Object) metode dipanggil karena ChangeMonitor instans mendeteksi perubahan, atau ketika Dispose() metode dipanggil pada ChangeMonitor, mana pun yang terjadi terlebih dahulu.
OnChangedCallback Instans yang disediakan oleh ObjectCache implementasi harus menghapus entri cache terkait dan menentukan alasan dengan menggunakan DependencyChanged enumerasi.
ChangeMonitor Instans dapat memanggil OnChanged(Object) metode baik sebelum implementasi cache memanggil NotifyOnChanged(OnChangedCallback) metode atau setelahnya. OnChanged(Object) Jika metode dipanggil sebelumnya NotifyOnChanged(OnChangedCallback) dipanggil, implementasi dasar ChangeMonitor akan memberi tahu cache bahwa ini telah terjadi dan akan memicu panggilan balik untuk segera diteruskan NotifyOnChanged(OnChangedCallback) ketika NotifyOnChanged(OnChangedCallback) dipanggil. Setiap data status yang diteruskan ke OnChanged(Object) metode disimpan oleh monitor perubahan dan kemudian diteruskan ke NotifyOnChanged(OnChangedCallback) metode ketika NotifyOnChanged(OnChangedCallback) metode dipanggil.
Monitor perubahan harus menerapkan Dispose(Boolean) metode . Untuk informasi selengkapnya, lihat Dispose(Boolean)dokumentasi metode.
Metode Dispose() kelebihan beban harus dipanggil untuk membuang instans ChangeMonitor . Aturan untuk memanggil Dispose adalah sebagai berikut:
Sebelum item dimasukkan ke dalam cache, pemanggil bertanggung jawab untuk membuang instans ChangeMonitor .
Setelah item cache dan ChangeMonitor instans yang terkait dengannya diteruskan ke cache, pelaksana cache harus memastikan bahwa Dispose metode dipanggil, bahkan jika sisipan gagal.
Setelah item dan instans terkait diteruskan ChangeMonitor ke cache, pemanggil tidak boleh membuang dependensi karena ketika Dispose metode dipanggil, panggilan diperlakukan seolah-olah dependensi telah berubah. Akibatnya, OnChanged(Object) metode ini secara otomatis dipanggil.
Dengan mempertimbangkan aturan ini, Dispose metode harus dipanggil dengan salah satu cara berikut:
Pengguna harus memanggil Dispose() metode kelebihan beban jika mereka memutuskan untuk tidak memasukkan instans monitor perubahan turunan ke dalam cache.
Jika implementasi mencoba memasukkan instans change-monitor ke dalam cache objek tetapi penyisipan gagal, implementasi cache bertanggung jawab untuk memanggil Dispose() kelebihan beban. Ketika upaya penyisipan menyebabkan pengecualian, implementasi cache harus membuang dependensi terkait.
Jika entri cache dihapus, implementasi cache juga harus membuang dependensi.
Implementasi OnChanged(Object) internal metode secara otomatis memanggil Dispose metode setelah memanggil panggilan balik yang terdaftar melalui NotifyOnChanged(OnChangedCallback).
Catatan: Panggilan otomatis ke metode buang ini selama penembakan peristiwa hanya terjadi jika inisialisasi ChangeMonitor instans sebelumnya selesai.
Ketika konstruktor monitor perubahan turunan memanggil InitializationComplete() metode , jika status monitor perubahan telah berubah (yaitu, status yang dipantau sudah berubah ketika konstruktor masih aktif) maka InitializationComplete() metode akan secara otomatis membuang monitor perubahan.
- Properti HasChanged diatur ke
true
setelah OnChanged(Object) metode dipanggil oleh instans monitor perubahan turunan, terlepas dari apakah OnChangedCallback objek telah diatur oleh panggilan ke NotifyOnChanged(OnChangedCallback) metode atau tidak.
Konstruktor
ChangeMonitor() |
Menginisialisasi instans baru kelas ChangeMonitor. Konstruktor ini dipanggil dari konstruktor di kelas turunan untuk menginisialisasi kelas dasar. |
Properti
HasChanged |
Mendapatkan nilai yang menunjukkan bahwa status yang dipantau oleh ChangeMonitor kelas telah berubah. |
IsDisposed |
Mendapatkan nilai yang menunjukkan bahwa instans turunan dari ChangeMonitor kelas dibuang. |
UniqueId |
Mendapatkan nilai yang mewakili instans ChangeMonitor kelas. |
Metode
Dispose() |
Merilis semua sumber daya yang digunakan oleh instans ChangeMonitor kelas saat ini. |
Dispose(Boolean) |
Merilis semua sumber daya terkelola dan tidak terkelola dan referensi apa pun ke ChangeMonitor instans. Kelebihan beban ini harus diimplementasikan oleh kelas monitor perubahan turunan. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
InitializationComplete() |
Dipanggil dari konstruktor kelas turunan untuk menunjukkan bahwa inisialisasi selesai. |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
NotifyOnChanged(OnChangedCallback) |
Dipanggil oleh pelaksana Cache untuk mendaftarkan panggilan balik dan memberi tahu ObjectCache instans melalui OnChangedCallback delegasi ketika dependensi telah berubah. |
OnChanged(Object) |
Dipanggil oleh kelas turunan untuk meningkatkan peristiwa saat dependensi berubah. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Berlaku untuk
Keamanan Thread
Jenis ini aman untuk utas.