.Net Framework’te Timer Class’ları Arasındaki Farklar
BilgeAdam’da öğrencilerime WinForms anlatırken, kafalarının çok karıştığı konulardan biri de Timer nesnesidir.
Daha doğrusu Timer nesneleridir demeliyim. Çünkü .Net Framework’te Timer ismine sahip tam 3 tane class var;
- System.Timers.Timer
- System.Threading.Timer
- System.Windows.Forms.Timer
Özellikle Multi-Threaded uygulamalarda tercih edilir. Thread-safe olduğu için, birden çok thread’den erişilebilir.
System.Timers.Timer t = new System.Timers.Timer(5000);
t.Elapsed += delegate(object _s, System.Timers.ElapsedEventArgs _e)
{
MessageBox.Show("5 saniye geçti!..");
t.Stop();
};
t.Start();
TimerCallBack delegate kullanarak, atanmış metodu çalıştırabilir. Metod, framework tarafından oluşturulan başka bir thread’de çalışır.
Timer nesnesi oluşturulduğu anda, çalışmaya başlar ve scope’tan çıkana kadar da çalışır. Durdurmak veya Başlatmak mümkün değildir.
Aşağıdaki örnekte 2.parametre (null), Callback method’a aktarılacak parametreyi gösterir.
3.parametre (1000), Timer nesnesi başlatılmadan önce beklenecek süreyi gösterir.
System.Threading.Timer t = new System.Threading.Timer(new System.Threading.TimerCallback(TimerTest), null, 1000, 5000);
private void TimerTest(object state)
{
MessageBox.Show("5 saniye geçti!..");
}
Toolbox’ta gördüğümüz nesnedir. Windows Form ile aynı thread’de ve senkron olarak çalışır, böylece hiçbir UI operasyonunu bölmez.
System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
t.Interval = 5000;
t.Start();
t.Tick += delegate(object _s, EventArgs _e)
{
MessageBox.Show("5 saniye geçti!..");
t.Stop();
};
Daha ayrıntılı bilgi için MSDN’deki şu makaleyi okuyabilirsiniz.
İlgili diğer başlıklar:
- C# ile Network Activity Monitor yazalım
- C# Windows’un Boş Zamanını (Idle Time) Bulmak
- C# ile Ping Uygulaması
- @@IDENTITY, SCOPE_IDENTITY() ve IDENT_CURRENT() arasındaki farklar
- Kısa Sınav – 2
- C# ile Form’a gölge efekti verelim ve titreme sorununu düzeltelim
- Thread.Sleep ve Thread.SpinWait arasındaki fark
- TPL (Task Parallel Library) – Task Class
- C# ile Kes-Kopyala-Yapıştır Olaylarını Fırlatan Textbox
- C# Textbox’ın AutoComplete Özelliği
Merhabalar arkadaslar ben burada yeniyim:)
Teşekkür ederim.
System.Threading.Timer kısmı pek anlamadım. Diğerleri anladım.