msHOWTO

8 Nisan 2012 Pazar

C# da Timer Kullanımı

Merhaba arkadaşlar.Bu makalemde sizlere Timer nesnesinin çalışma mantığını anlatıp güzel bir örnekle de anlamanıza yardımcı olmaya çalışacağım . Dah önce Timer nesnesini duymuş olabilirsiniz . Ama duymadığınızı varsayarak anlatmaya başlayacağım . Nedir bu Timer ? Bu nesnenin ne olduğunu anlamak için hemen bir analog saat bulun ve biraz inceleyin. Analog saati incelediğimizde her saniyede belli olan bir şekilde saniye ibresi yer değiştirir.Saniye ibresi 60 olduğunda ise yelkovan yer değiştirir.Aynı şekilde yelkovan 60 olduğunda ise akrep yer değiştirir değil mi ? Yani kısaca belli zaman aralıklarında ve her bu aralık tekrarlandığında bir takım işlemler yapar ve bu işlemler sabittir.İşte Timer nesnesi de aynı mantıkla çalışmaktadır.Belli bir çalışma aralığı vardır.(Interval özelliği)Bu aralıklarda timer nesnesinin Tick olayına yazılan kodlar işlenir.Diyelim ki her saniyede çalışmasını istediğiniz bir kod bloğunuz var.O kodları işletmenin yolu uygulamanıza bir Timer nesnesi ekleyip Tick olayına o kodları yazmak olacaktır.Ve bunlara ek olarak Interval özelliğini 1000 olarak ayarlamanız olacaktır.Peki neden 1000 ? Çünkü interval değeri milisaniye cinsinden değer alır.Peki tüm bunları yaptıktan sonra çalışacak mıdır ? Tabiki hayır. Son olarak uygulamanızda istediğiniz yerde timer ınızı Start() edip başlatmanız gerekmektedir.Durdurmak için ise Stop() yazmanız yeterli olacaktır.

Gelelim örnek uygulamamıza.Hemen hemen herkes MSN kullanmıştır.Karşı taraftan size bir titreşim gönderildiğinde konuşma pencereniz belirli bir zaman diliminde titriyor değil mi ? Hadi gelin aynısını yapalım ...


Şeklinde bir form tasarlayın.Ve ToolBox dan Timer nesnesi ekleyin.Timer nesnenizin interval değerini 100 yapın.Ve aşağıdaki kodu buttonun Click olayına yazın.

timer1.Start();

Daha sonrasında ise aşağıdaki kodları Timer nesnenizin Tick olayına yazın.Tick olayına ister timer nesnesine çift tıklayarak isterseniz timer nesnesini seçip olaylarından ulaşabilirsiniz.

int i = 0;
        private void timer1_Tick(object sender, EventArgs e)
        {
           
            if (i % 2==0)
            {
                this.Left += 5;
                this.Top += 5;
               
            }
            else
            {
                this.Left -= 5;
                this.Top -= 5; 
            }

            i++;
            if (i==10)
            {
                timer1.Stop();
                i = 0;
            }


Not: i değişkeninin global olduğuna dikkat edin. This demek kodların bulunduğu form anlamına gelmektedir.

Bir sonraki makalede görüşmek dileğiyle... 






2 yorum: