Konsep Event di bahasa C# mirip seperti di bahasa-bahasa pemrograman lainnya. Misalnya Java. Untuk memahami event, teman-teman harus memahami konsep publisher dan subscriber. Publisher adalah tempat event di deklarasikan dan tempat event terjadi. Subscriber adalah bagian yang ingin diberitahu bahwa suatu event(kejadian) telah terjadi. Ketika subscriber meminta kepada publisher untuk diberi tahu kalau suatu event terjadi ditempatnya, dia mendaftarkan handler untuk menangani pemberitahuan tersebut.
Event adalah suatu mekanisme dimana publisher akan memberi tahu subscriber bahwa event telah terjadi. Setelah subscriber mendapat pemberitahuan, sebuah handler akan menangani pemberitahuan tersebut. Agar subscriber mendapat pemberitahuan dari publisher, dia harus melakukan subscribe pada publisher dengan cara mendaftarkan handler pada event yang dimiliki publisher.
Event dibuat dari suatu delegate. Oleh karena itu, kita bisa melakukan multicast pada event. Tetapi, berbeda dengan delegate, pada event kita tidak bisa menggunakan operator “=”, kita hanya bisa menggunakan operator “+=” dan “-=”. Hal lainnya yang membedakan event dan delegate adalah event harus dideklarasikan di dalam kelas, tidak bisa di luar class.
Untuk membuat sebuah event, kita harus membuat sebuah delegate terlebih dahulu. Jika teman-teman belum tahu apa itu delegate, silahkan baca dulu tulisan saya di sini. Pada contoh ini saya mendeklarasikan delegate dengan nama EventHandler.
1 | public delegate void EventHandler(); |
Setelah membuat delegate, baru kita bisa mendeklarasikan event. Format untuk membuat event adalah sebagai berikut.
<acces modifier> <event> <nama delegate> <nama event>; |
Berikut contohnya.
1 | public event EventHandler TimeEvent; |
Contoh Kode Sumber Penggunaan Event di Bahasa C#
Objek manusia melakukan subscribe ke event yang dimiliki objek timer. Ketika melakukan subscribe objek manusia mendaftarkan handler Bangun() yang akan menangani jika ada pemberitahuan event. Ketika event terjadi di objek manusia, pemberitahuan akan dikirim ke objek manusia. Ketika pemberitahuan diterima, handler di objek manusia akan dijalankan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace EventApp { public class Timer { //Mendeklarasikan delegate public delegate void EventHandler(); //Mendeklarasikan event public event EventHandler TimeEvent; //Simulasi timer public void Start() { for (int i = 1; i <=60; i++) { //Pada detik ke 10, event dibangktikan if (i == 10) { if (TimeEvent!=null) { TimeEvent(); } } Thread.Sleep(1000); } } } public class Manusia { public void Bangun() { Console.WriteLine("Bangun manusia!!!"); } } class Program { static void Main(string[] args) { //Membuat objek manusia Manusia manusia = new Manusia(); //Membuat objek timer Timer timer = new Timer(); //Objek manusia mendaftarkan handler Bangun() ke event TimeEvent milik objek timer timer.TimeEvent += manusia.Bangun; //Melakukan simulasi timer //Pada detik ke 10, event di objek timer akan dibangkitkan dan objek manusia //akan diberitahu bahwa event telah terjadi. Setelah diberi tahu, handler //yang sudah didaftarkan oleh objek manusia akan dieksekusi timer.Start(); } } } |
Saya sudah menambahkan penjelasan di masing-masing baris kode agar teman-teman mudah memahaminya. Silahkan dipelajari.
Tampilan Ketika Program Dijalankan

Jika ada yang ingin ditanyakan, silahkan ditanyakan di komentar atau hubungi saya melalui WhatsApp. Jangan lupa juga untuk membaca tulisan-tulisan saya lainnya di sini. Terima kasih, semoga bermanfaat.
Be First to Comment