Delege – Event hakkında

Kategori: C#
Tarih: 19th Ocak 2012

Bu yapı benim aklıma hep mail listelerini getiriyor. Önce bir gurup oluşturursun sonra bir bilgiyi göndermek için sen bir sefer gönder dersin sonra sistem o bilgiyi listedeki herkese gönderir. Aslında Delege – Event yapısıda buna benzer. Önce bir delege oluşturursun (bunu bir kişi olarak düşün). Sonrada bir event oluşturursun. -bunuda bir liste olarak düşünebiliriz- Eventi istediğin kadar Delege ile doldurursun. İhtiyacın oluncada sen eventi çalıştırırsın, o da listedeki bütün delegeleri.

Delegeler fonksiyonları temsil eden yapılardır. Aslında bi işlem yapmazlar. Sadece bağlı oldukları fonksiyonları tetiklerler. Bir delegeyi aşağıdaki şekilde tanımlayabiliriz.

public delegate void BenimDelegem(int parametre);

Delegeler bağlı oldukları fonksiyonlar ile aynı yapıda olmalılardır. Yani yukarıdaki delegeyi bağlayacağınız fonksiyonda void türünde olmalı ve integer bir paratmetre almalı. İsterseniz Event olmadan da direk fonksiyonu delegeye bağlayabilirsiniz

BenimDelegem delege = fonksiyonAdi;

“delege” isminde bir delege oluşturduk ve fonksiyonAdi metoduna bağladık.

Eventler birden fazla -aynı türde- delegeyi barındıran yapılardır. Aşağıdaki şekilde oluşturulurlar.

public event BenimDelegem BenimEventim;

Bir evente aşağıdaki şekilde delege ekleyebilir ve çıkartabilirsiniz.

BenimEventim+= new BenimDelegem(delegenin bağlı olduğu fonksiyon ismi);

BenimEventim-= new BenimDelegem(delegenin bağlı olduğu fonksiyon ismi);

Senaryo şu çok odalı bir işletme düşünelim oda sayısıda dinamik olsun, sürekli yeni odalar eklenebliyor ve çıkabiliyor. Her odada bir buton var müdür gelince personelden birisi odanın butonuna basıyor ve her odada müdürün bulunduğu odanın numarası çıkıyor. Delege yapısı kullanmıyor olsak her oda için ayrı ayrı fonksiyon ( “müdürün bulunduğu odayı ekrana yaz” fonksiyonu) tetiklememiz gerekecekti. Yada odaları (formları) foreach ile okuyup  bu fonksiyonu tetikletebilirdik.

Delege – event yapısı bizim işimizi çok kolaylatıracak. 1 tane müdür geldi diye event oluşturacağız. Ve tüm odaları (delegeleri) bu evente ekleyeceğiz. Bunu görev listesi olarak düşünebiliriz. Evente, müdür hangi odaya geldi ise onun numarasını göndereceğiz. Sonra o bütün delegeleri çalıştıracak yani bütün formlara bizim yerimize müdür şu odada yazacak. İcraata geçelim.

Bir tane oda formumuz olsun. Bunun iki tane methodu olacak:

1.si ekranaYaz metodu. Delege bu methoda mürün kaçıncı odada olduğunu söyleyecek buda kendi formuna yazacak

2.si buttonClick metodu. Müdür bu odaya gelir ise personel bu butona basarak diğer odalara müdür bizim odada diye haber verecek.

Özetleyecek olursak hangi odadan basılırsa basılsın müdür bizim odaya geldi eventi tetiklenecek. Oda görev listesindeki bütün görevleri (yani delegeleri ve dolayısıyla delegelerin çalıştırdığı fonksiyonları) çalıştıracak böylece tek işlem ile bütün odalara bilgi yazılmış olacak. Proje dosyasını buradan indirebilirsiniz.

Yorumlar: 0 » tags: , ,
Optimization WordPress Plugins & Solutions by W3 EDGE