Giriş
Şu satır dahil edilir.
AutoReset Alanı
Bu sınıfının en dikkat gerektiren özelliği aşağıda:
Elapsed nesnesi System.Timers.ElapsedEventHandler tipindendir.
Elapsed handler içindeki exception'ları dışarı vermez.
Start metoduŞöyle yaparız.
Stop metodu
Şöyle yaparız.
Sınıfın SyncronizingObject özelliği Form yapılırsa Forms.Timer'ın aksine hem GUI'yi güncelleyebilir hem de GUI sleep etse timer kaymaz (drift etmez)
Şu satır dahil edilir.
using System.Timers;
Bu sınıfın da Winforms Timer gibi GUI'de kullanılmaya daha elverişli olduğu yazılmış. GUI kullanmıyorsak bu sınıf yerine System.Threading.Timer kullanılabilir.AutoReset Alanı
Bu sınıfının en dikkat gerektiren özelliği aşağıda:
Yani timer event handler yavaş ise handler işini bitirmeden bir kere daha çağırılabilir. Bu durumda AutoReset özelliği false yapılarak one-shot şekilde kullanmak gerekir.If processing of the Elapsed event lasts longer than Interval, the event might be raised again on another ThreadPool thread. In this situation, the event handler should be reentrant.
Elapsed nesnesi System.Timers.ElapsedEventHandler tipindendir.
myTimer.AutoReset = false; // makes it fire only once
Elapsed AlanıElapsed handler içindeki exception'ları dışarı vermez.
Şöyle yaparız.The Timer component catches and suppresses all exceptions thrown by event handlers for the Elapsed event.
myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed);
Handler şöyle olabilir.
void myTimer_Elapsed(object sender, EventArgs e)
{
...
}
Handler şöyle olabilir.
void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e){
...
}
Handler içinde geçen süreye erişilebilir.
void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e){
TimeSpan ts = sw.Elapsed;
if (ts.TotalSeconds >= ...)
{...}
...
}
Interval Alanı
Milisaniye cinsindendir. Şöyle yaparız.
myTimer.Interval = 1000;
myTimer.Start();
Şöyle yaparız.
myTimer.Stop();
SyncronizingObject AlanıSınıfın SyncronizingObject özelliği Form yapılırsa Forms.Timer'ın aksine hem GUI'yi güncelleyebilir hem de GUI sleep etse timer kaymaz (drift etmez)
Eğer bu alana bakmadan GUI'ye erişmek için şöyle yapmak gerekir.
void timerElapsed(object source, ElapsedEventArgs e){
if (InvokeRequired)
{
this.Invoke(new Action(() => { Hide(); }));
}
else
{
Hide();
}
}
Hiç yorum yok:
Yorum Gönder