C# Event Handling

Aralık 28, 2011

 

C# ‘taki event yapısına hepimiz aşinayızdır bir uygulama yazarken en sık kullandığımız yapıdır desek yanlış olmaz galiba.Button nesne’sinin click event’i en sık kullanıdığımız tetiklendiği zaman bizim istediğimiz işlemleri yerine getiren event’dir.Bu yazımda kendi nesnelerimize event eklemeyi anlatacağım.Şu ana kadar kullandığımız tüm eventler .Net Framework’ün içerisinde hazır bir şekilde gelmekteydi.Peki projemizde kullanmak üzere bir class yazdık ve bu class üzerinden bir instance oluşturup gerekli şekilde kullandığımızı farz edelim ve yaptığımız işlemler sırasında belirli bir koşul sağlandığında haberdar olmak istiyoruz veya o an oluşan duruma göre önlem almak istiyor olabiliriz.Örneğin : Stok takibi ile bir uygulama geliştiriyorsanız eğer stoklar azaldığında uygulamanızın sizi uyarmasını istiyorsanız event’lere baş vurmalısınız, bu örnek için oluşturacağınız event sizi ürün stok’ları 25 in altına düştüğü zaman uyarabilir sizde bu duruma göre yetkili kişilere uygulama üzerinden gerekli mail’leri gönderebilirsiniz.Bu şekilde ürünler stok’da %100 bitmeden müdahele etmiş olursunuz.Bir başka örnek : e-ticaret uygulaması geliştirdiğinizi farz edin kullanıcıların önceden belirledikleri ürünler için belirttikleri fiyatın altına düştüğü zaman o ürün bu kullanıcıya haber verme amaçlı otomatik olarak mail gönderdiğinizi düşünün.Binlerce kullanıcısı olan bir site ise bu işlemi elle manuel yapmak nasıl bir iş yükü ve gerçek hayatta yapılamayacağını hayal edin.Bu gibi örnekler uzayıp gidebilir tabiki, konumuzdan çokta uzaklaşmadan yavaş yavaş kendi geliştireceğimiz örnek üzerinde çalışmaya başlayalım.Biz uygulamızı basit ve anlaşılır olması açısından küçük bir Araba class’ı yazarak oluşturacağız.Araba nesne’mizin Hiz özelliğine değer atamaları yaparak nesnemizin hızını sanal ortamda artırıcağız daha sonra bu nesnemize bağlıyacağımız event ile araba nesnemizin hızını takip ediyor olacağız araba’mızın hızı 120 km ‘yi geçip geçmediğini bilmek istiyoruz bu örneğimiz için.Arkadaşlar event oluşturabilmek için delegate yapısınada ihtiyaç duyuyor olacağız ama delegate konusu çok geniş ve birazcık daha zor olduğu için delegate konusunu ileriki zamanlarda tek başına bir konu olarak anlatmayı düşünüyorum.Şu an için delegate yapısını temsilci olarak bilseniz yeterli olacaktır.Uygulama olarak console app. oluşturalım ve class’ımızı yazalım.

 

 

 

 

İlk olarak HizAsimiEventHandler  delegate’imizi oluşturuyoruz delegate’miz geri değer döndürmüyor ve parametre almıyor.Araba class’ımız da ise event’imizi yazıyoruz dikkat ederseniz public event ‘den hemen sonra HizAsimiEventHandler yapısı aynı kalıyor daha sonra event adını veriyoruz.Class’ımızda hiz ve model olarak 2 tane property tanımladık get ve set method’larını yazdık burada dikkat edilmesi gereken bir başka nokta ise Hiz property ‘sini yazarken set değerinde if kontrolü ile Hiz değerine atadığımız yeni değerin (burada value) 120 den büyük olup  olmadığıdır eğer yeni atanan değer  120 ‘den büyük ise event’imizin tetiklenmesi lazım bu yüzden if kontrolünün altında HizAsimi eventini çağırıyoruz.Bu şekilde Araba class’ımıza 120 den büyük bir Hiz değeri atanmaya çalışıldığı zaman bundan haberdar olacağız.Class’ımızı yazdıktan sonra sıra geldi arama nesnemizi kullanmaya Main method’unun içerisine gidelim ve sınıfımızdan yeni bir instance oluşturalım.

 

 

 

 

Araba nesnemizden bir instance oluşturup noktaya bastığımız zaman kendi oluşturduğumuz event’i yıldırım işareti olarak görüyoruz daha sonra şu şekilde devam edelim

 

 

HizAsimi event’inin üzerinde iken 2 kere tab tuşuna basarsanız visual studio sizin yerinize bu event’i kendisi oluşturacaktır.İlk değerler olarak Hiz property’mize 80 değerini atadık daha sonra döngü içerisinde Hiz değerini 10 10 artırdık uygulamamızı bu şekilde tamamlamış olduk şimdi ekran çıktımıza bakalım.

 

 

 

 

Görüldüğü gibi hızımız 90′dan 120′ye kadar event’imiz tetiklenmedi ama Hiz property’mizi 120 iken 10 daha ekleyip 130 yapınca HizAsimi event’imiz tetiklendi ve ekrana bunu yazdırdı.Bu noktada istersek hızlanan arabamızı yavaşlatabiliriz veya sabit gitmesinide sağlayabiliriz.

 

 

Kaynak Kodları Buradan İndirebilirsiniz

 

 

 

 

 

posted in C# by gokhan

Follow comments via the RSS Feed | Yorum yapın | Trackback URL

3 Comments to "C# Event Handling"

  1. Arif wrote:

    Makaleniz sade bir dile sahip. Özellikle verdiğiniz örnekle gayet anlaşılır olmuş. Teşekkür ederim, iyi çalışmalar…

  2. YUsUf wrote:

    Makaleniz de bu karmaşık konuyu çok iyi bir şekilde anlatmışsınız. Emeğiniz için teşekkürler.

  3. ismail KAYA wrote:

    Anlatım dili gerçekten sade, ellerine sağlık.

Leave Your Comment

*

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org