Timer etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Timer etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

22 Kasım 2018 Perşembe

System.Threading.Timer Sınıfı

Giriş
Bu timer background işler için tercih edilir.

Constructor - Lambda
4 parametre alır. İlk parametre callback, ikincisi callback'e geçilecek nesne, üçüncüsü geciktirme (delay) süresi, dördüncüsü ise aralık (interval) süresi. Interval süresi Timeout.Infinite verilebilir.

Örnek
Periyodik timer için şöyle yaparız.
var timer = new Timer(s => { ... },null, 1000, 1000);
Örnek
Singleshot timer için şöyle yaparız.
var timeMS = 1000;
var timer = new Timer(_ => Console.WriteLine("Peekaboo"), null, timeMS, Timeout.Infinite);
Console.ReadKey();
Constructor - TimerCallback
Şöyle yaparız.
public void MyCallback (object obj)
{
  int x = (int)obj;
  ...
}
TimerCallback callback = new TimerCallback (MyCallback);
int num = 0; 
Timer timer = new Timer (callback, num, 0, 2000);//4-th number is interval in ms
Şöyle yaparız.
public void MyCallback(object o) { ... }
int timeToStart = 1000;
int period = 2000;

//fire the delegate after 1 second, and every 2 seconds from then on
Timer timer = new Timer(MyCallback, null, timeToStart, period);
Change metodu
Şöyle yaparız.
//pause
timer.Change (Timeout.Infinite, Timeout.Infinite);
Şöyle yaparız.
int timeToStart = 1000;
int period = 2000;

//resume
timer.Change (timeToStart, period);
Diğer Notlar

Timer içinde GUI'ye erişmek
Bu sınıf arka plandaki işler için tercih edilse bile GUI'ye erişmek için kullanılabilir. Şöyle yaparız.
var context = SynchronizationContext.Current;
var tm = new System.Threading.Timer(state => 
{
  context.Send(delegate() { statusDateTimeLabel.Text = ... });
}, null, TimeSpan.FromMilliseconds(0), TimeSpan.FromMilliseconds(1000));


17 Ağustos 2017 Perşembe

Winforms Timer Sınıfı

Giriş
Şu satırı dahil ederiz.
using System.Windows.Forms;
GUI thread'i üzerinde çalışan bir timer. 

Constructor
Şöyle yaparız.
Timer timer = new Timer();
Enabled Alanı
Şöyle yaparız.
timer.Enabled = true;
Interval Alanı
Şöyle yaparız. Bu alan en küçük 1 ms.değerini alabilir
timer.Interval = 5000;
Start metodu
Şöyle yaparız.
timer.Start();
Stop metodu
Şöyle yaparız.
timer.Stop();
Tick Event
Tick alanı System.EventHandler tipinden. İmzası şöyle
public delegate void EventHandler(object sender, EventArgs e)
Şöyle kullanırız.
timer.Tick += Timer_Tick;

void Timer_Tick(object sender, EventArgs e)
{...}
Eğer Timer_Tick metodunun imzası EventHandler'ın beklediği imza değilse şu hatayı alırız.
CS0123 No overload for 'Timer_Tick' matches delegate EventHandler.
Timer periyodik olduğu için  Stop() çağrılıncaya kadar çalışır.

26 Eylül 2016 Pazartesi

Timer Sınıfları

Giriş
C#'ta 4 çeşit timer sınıfı bulunuyor.

System.Windows.Forms.Timer - GUI
Winforms Timer Sınıfı yazısına taşıdım.

WPF DispatchTimer
WPF DispatchTimer Sınıfı yazısına taşıdım.

System.Timers.Timer - GUI
System.Timers.Timer Sınıfı yazısına taşıdım.

System.Threading.Timer
System.Threading.Timer Sınıfı yazısına taşıdım