Showing posts with label events. Show all posts
Showing posts with label events. Show all posts

Friday, June 17, 2016

Događaji u C# programskom jeziku


Event – događaj u C# programskom jeziku je način da klasa ili objekat pruži obaveštenje drugim klasama ili objektima da se nešto važno dogodilo. Klasa koja generiše događaj naziva se publisher – izdavač dok klasa koja prima ili obrađuje događaj se naziva subcriber – pretplatnik. Klasa publisher definiše kad će se generisati događaj dok klasa subscriber odlučuje koja će se akcija preduzeti. Obično klasa pretplatnik sadrži čitavu listu metoda koji se pozivaju kad se izazove događaj i takve metode takođe zovemo subscribers - pretplatničke metode. Kada programeri rade sa događajima, uglavnom se to odnosi na programiranje aplikacije sa grafičkim okruženjem ili web aplikacijama, zato što su takve aplikacije vođene događajima. Na primer kad god vi kliknete na neku stavku u meniju ili neko dugme na formi mišem; vi zapravo aktivirate određeni događaj i na osnovu pokrenutog događaja se izvršava kod koji se nalazi u proceduri događaja za stavku menija ili dugmeta koje ste pritisnuli. Kako će ceo tok programa da se izvršava zavisi od događaja koje korisnik aktivira sve do izlaska iz aplikacije. Zato kažemo da su navedene aplikacije vođene događajima. Događaji se retko koriste u konzolnim aplikacijama ali i u njima mogu da imaju svoju primenu.


( Događaji u C# programskom jeziku )

Deklaracija događaja je jednostavna, stime da su događaji namenjeni da se koriste sa delegatima. Jednostavno tip događaja mora da bude delegat i zato ispred delegata mora da se nalazi ključna reč event. U .Net Framework-u su događaji bazirani na EventHandler delegatu. O delegatima čitajte ovde, a sintaksa za deklarisanje događaja je sledeća:


event DelegatDogadjaja imeDogadjaja;

Kao i kod delegate, pretplata na događaj se vrši operatorom +=

ImeDogadjaja += new DelegatDogadjaja (ImeMetode);

Dok se odjava, otkazivanje pretplate vrši operatorom -=

ImeDogadjaja -= new DelegatDogadjaja (ImeMetode);

Pre generisanja događaja se uvek proverava da li događaj ima null vrednost:

if (ImeDogadjaja != null)
{
    ImeDogadjaja.Invoke();

}

Događaje će te najbolje naučiti koristeći praktične primere. Pogledajte jedan od njih.

Praktičan primer događaja