2 Eylül 2015 Çarşamba

.Net Framework’te Timer Class’ları Arasındaki Farklar

 .Net Framework’te Timer ismine sahip tam 3 tane class var;
  • System.Timers.Timer
  • System.Threading.Timer
  • System.Windows.Forms.Timer
System.Timers.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();
System.Threading.Timer
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!..");

}
System.Windows.Forms.Timer
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.

Hiç yorum yok:

Yorum Gönder

.net 6 mapget kullanımı

 app.UseEndpoints(endpoints => {     endpoints.MapGet("/", async context =>     {         var response = JsonConvert.Seriali...