Anda bisa menggunakan penyetel properti untuk memunculkan acara setiap kali nilai bidang akan berubah.
Anda dapat memiliki delegasi EventHandler Anda sendiri atau Anda dapat menggunakan delegasi System.EventHandler yang terkenal.
Biasanya ada pola untuk ini:
- Tentukan acara publik dengan delegasi penanganan acara (yang memiliki argumen jenis EventArgs).
- Tentukan metode virtual terlindungi yang disebut OnXXXXX (misalnya OnMyPropertyValueChanged). Dalam metode ini, Anda harus memeriksa apakah delegasi event handler null dan jika tidak, Anda dapat memanggilnya (artinya ada satu atau lebih metode yang dilampirkan ke delegasi acara).
- Panggil metode terlindungi ini setiap kali Anda ingin memberi tahu pelanggan bahwa ada sesuatu yang berubah.
Berikut contohnya
private int _age;
//#1
public event System.EventHandler AgeChanged;
//#2
protected virtual void OnAgeChanged()
{
if (AgeChanged != null) AgeChanged(this,EventArgs.Empty);
}
public int Age
{
get
{
return _age;
}
set
{
//#3
_age=value;
OnAgeChanged();
}
}
Keuntungan dari pendekatan ini adalah Anda mengizinkan kelas lain yang ingin mewarisi dari kelas Anda untuk mengubah perilaku jika perlu.
Jika Anda ingin menangkap acara di utas berbeda yang dimunculkan, Anda harus berhati-hati agar tidak mengubah status objek yang ditentukan di utas lain yang akan menyebabkan pengecualian utas silang dilempar. Untuk menghindari hal ini, Anda dapat menggunakan metode Panggil pada objek yang ingin Anda ubah statusnya untuk memastikan bahwa perubahan terjadi di utas yang sama dengan peristiwa yang telah dimunculkan atau jika Anda berurusan dengan Formulir Windows Anda dapat menggunakan BackgourndWorker untuk melakukan berbagai hal dalam utas paralel dengan baik dan mudah.