Timer belirli zaman aralıklarında iş yaptırmak amacıyla milisaniye cinsinden geçen süreyi hesaplamak için kullanılır. İstediğimiz komutların belirlediğimiz zaman aralığında tekrarlamasını istiyorsak timer kullanabiliriz. Türkçe’de sayaç anlamına gelmektedir ve bu görevi üstlenmek için kullanılan sınıf da Timer sınıfıdır.

Timer nesnesini Toolbox’dan eklenildiği zaman form üzerinde görünmez. Onun yerine formun altında yer alarak ilgili kodlarla işlevini görmeye başlar.

timer

Timer kullanırken bazı parametrelere dikkat etmek gerekir.

Interval: timer’ın milisaniye cinsinden çalıştığını belirttiğimiz yerdir. Örneğin 1 sn timer’ın çalışmasını istiyorsak 1000 değerini atamalıyız.

timer1.Interval = 1000;

Timer’ın bu değerini bir eventte de atayabiliriz. Mesela form yüklenirken veya buton click olayında bu parametreye değer verebiliriz.

Enabled: Timer nesnesinin çalışıp çalışmayacağını belirten özelliktir. Bu değer True ise timer çalışır anlamında, false ise timer çalışmaz anlamına gelmektedir. Bu özelliğe de kod ekranından verebileceğimiz gibi properties penceresinden verebiliriz. Kullanımı aşağıda gösterildiği gibidir.

timer1.Enabled=true;
timer1.Enabled=false;

Tick: Bu fonksiyon timer’ın intervalde belirtilen zamanda yapılmasını istediğimiz komutları yazdığımız yerdir. Tick eventi için timer nesnesine çift tıklayarak girebiliriz veya eventler penceresinden bu eventi tetikleyebiliriz. Böylece her bir interval aralığında neler yapmasını istiyorsak programımızın buraya yazmalıyız.Şimdi küçük bir örnek yapalım.

Örnek: Kronometre uygulaması yapalım.

Bunun için bir buton bir label bir de timer nesnesini form ekranımıza koyalım. Her bir saniyede bu değer birer birer azalmasını sağlamak için butonu timer başlat click eventine koyalım.

Eklenilen label’in text özelliğine şimdilik 60 değerini verelim ve name özelliğine de label1 değerini verelim. Butonun text özelliğine başlat diyelim ve click eventini tetikleyelim.

int sayi = 60;
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Interval = 1000;
            timer1.Enabled = true;
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            if(sayi>=0)
            {
            timer1.Interval = 1000;
            timer1.Enabled = true;
            int sayac = sayi--;
            label1.Text = sayac.ToString();
            }
        }

Yazan Sümeyra Akbıyık
hakkımdaki her şeyi bu blogda bulabilirsin. Haydi sende bir göz gezdirmeye ne dersin?

    2 yorum

  1. Lutfu Yasar Mart 9, 2017 at 1:02 am Cevapla

    Zaman uzun olunca güzel. Ama ıntervali mesela 10 yapınca sanıyede 100 kez çalışmıyor. Kesik kesik çalışıyor. Çaresı varmı. Teşekkürler..

    • Ertuğrul Tekin Şubat 25, 2019 at 7:35 pm Cevapla

      Kesik kesik çalışma söz konusu değil. Olaya daha matematiksel bakalım. interval değeri = 10 olunca bu şu demek tick eventinde bulunan işlemleri her 10 milisaniyede bir tekrarla. 10 milisaniye demek hertz cinsinden 100 herzt eder. Monitörlerimiz genellikle 60 hertz dir. Gözlerimiz ise 40-50 hertz arası görür kabaca bu işlem 1 den 100’e kadar sayma işlemi olsa 1’i gördüğünü varsayarsak 2’yi program hesapladı fakat monitörün kaçırdı, 3ü ekran yazar fakat gözün kaçırır, 4ü tekrar monitör kaçırır ve 5i görmeyi başarabilirsin.

      Umarım açıklamam seni aydınlatmıştır. 🙂

Yorum bırak