Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  Event driven programlamada olayların kestirilemez davranışından kaynaklanan hataları önlemek için acizanemce önerilmiş bir pattern. Pattern tanımlama standartlarına uygun biçimde tarif edeyim:

» Problem :
Olay güdümlü programlamada kullanıcı veya program işleyişinden kaynaklanan olayların ele alınıp, bu olaylar ortaya çıktığında şunu yap, bunu yap gibi kod yazılır. Ne var ki, bu harikulade bir teknik değildir. Çünkü bir olay her zaman aynı şekilde ele alınmak durumunda değildir. Hatta bazı durumlarda olayların hiç oluşmaması bile gerekebilir. Eğer saldım çayıra, mevlam kayıra misali olaylar fütursuzca tetikleniyorsa beklenmedik hatalar oluşur.

» Çözüm :
Olaylar aktif ve pasif duruma getirilebilmelidir. Olayların çalışmasını istediğimizde aktif hale getiririz, hiç bir olayın tetiklenmemesi gereken bir iş yaparken de olayları pasif hale getiriz.

» Örnek kod :
bool eventsEnabled = false;

void ActivateEvents()
{
    if(eventsEnabled) return;

    txtAd.ValueChanged += new EventHandler(this.adDegistiBiseylerYap);
    chkCinsiyet.Checked += new EventHandler(this.cinsiyetDegisti);
    //...

    eventsEnabled = true;
}
void DeactivateEvents()
{
    if(!eventsEnabled) return;

    txtAd.ValueChanged -= new EventHandler(this.adDegistiBiseylerYap);
    chkCinsiyet.Checked -= new EventHandler(this.cinsiyetDegisti);
    //...

    eventsEnabled = false;
}
// aşağıdaki metodda txtAd kontrolünün değeri değiştiriliyor.
// bu yapılırken txtAd'in Changed eventi tetiklenmemesi gerekiyor.
// bunun için önce bütün olayları deactivate edip, sonra activate ediyoruz.
void birMetod()
{
    DeactivateEvents();
    if(chkCinsiyet.Checked)
        txtAd.Text += " Bey";
    ActivateEvents();
}


fizikci
09 Eylül 2005 20:19
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.
© 2005, Bilişim Kulübü. (1062 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen