004. Event dan Delegate

Apakah Event dan Delegate?

Konsep Event dan Delegate bekerja sama dalam sebuah Class untuk mengatur dan menginformasikan suatu kejadian apabila member dan data dalam sebuah Class diproses atau berubah.

Delegate

Delegate dalam C# berguna untuk membuat referensi suatu method, atau sebagai function pointer. Untuk mendeklarasikannya, kita menambahkan keyword delegate pada nama delegate, seperti di bawah ini:




delegate void contohdelegate();


class CForm1 : FormUtama

{

delegate void ExecuteMethod(string s);

public void method1()

{

string s = "test";

}

public void method2(string s)

{
s = "bagus";
}

}

Pada method yang meninstansiasi delegate tersebut, kita gunakan beberapa cara berikut ini:

// cara. 1.

ExecuteMethod em = null;

string l;

em += new ExecuteMethod(method1);

em.Invoke();

baris terakhir bisa digantikan dengan baris dibawah ini


em();

Pada sintaks di atas, method invoke akan sama dengan em(). Cara berikutnya seperti sintaks di bawah ini. Tampak bahwa nama method langsung langsung dituliskan mengikuti deklarasi. Cara ini disebut menggunakan named method.

//cara. 2.

ExecuteMethod em = method1;
em();

Di samping cara instansiasi di atas bisa juga dengan anonimous method seperti di bawah ini. Penggunaan instansiasi ini untuk mengurangi overhead sebuah delegate… dengan menghindari penggunaan sebuah method yang tidak perlu.

ExecuteMethod em = delegate() { };
em();

Event

Event merupakan suatu cara atau mekanisme yang memungkinkan sebuah kejadian, yang ditimbulkan oleh perubahan data atau proses di sebuah method, bisa diketahui statusnya dan dipakai untuk keperluan selanjutnya, seperti berkomunikasi dengan objek lain.

Contoh-contoh event misalnya ialah kejadian saat mouse click, saat data belum berubah, saat data telah berubah, saat tombol ditekan, dan seterusnya.

Cara deklarasi event

Untuk menambahkan sebuah event di class, kita perlu menuliskan event keyword, dan menyediakan sebuah delegate dan sebuah nama event. Pada contoh ini, sebuah delegate didefinisikan dan dikaitkan dengan event bernama CobaEvent.

public delegate void SampleEventDelegate(object sender, EventArgs e);

public class SampleEventSource

{

public event SampleEventDelegate CobaEvent;

}

Urutannya ialah:

  1. deklarasi delegate
  2. deklarasi event.
  3. membuat method yang akan memicu event tersebut.

class ClassBentuk2

{

public delegate void ExecuteMethod();
public event ExecuteMethod testevent;

public void method1()
{
testevent();
}

}

Bagaimanan cara menggunakan Event?

Pada contoh kode di bawah ini, sebuah event akan digenerate saat user mengeksekusi method1. Disini isi eventnya ialah mengeksekusi method TestBiasa(). Pada pemanggilan event ini, digunakan anonymous method untuk untuk menangkap event yang terjadi.

ClassBentuk2 c4 = new ClassBentuk2();
//c4.method1();
c4.testevent += delegate { TestBiasa(); };
c4.method1();

No comments:

Post a Comment