//Formun içinde sadece trackBar1 diye bir trackbar, bir de label1 diye bir label var.
public partial class Form1 : Form
{
//Bu kullandığımız timer
System.Threading.Timer timer;
//bu da tutulan sayıyı hatırlaması için
int sayi = 0;
public Form1()
{
InitializeComponent();
//timer'ı ilk başta saniyede bir atacak şekilde ayarlıyoruz.
timer = new System.Threading.Timer(new System.Threading.TimerCallback(islem), null, 1000, 1000);
}
private **** islem(object obj) {
//işlem sadece sayıyı artırıyor, sonra da bunu gösteriyor.
//Label ayrı bir thread'de oluşturulduğundan Invoke ediyoruz
//Tembel olduğumuzdan ayrı bir fonksiyon yazmıyor, bir delegate'i
//methodinvoker olarak cast edip direkt invoke içinde çalıştırıyoruz.
//Zararlı değildir, kodun okunmasını başkaları için zorlaştırır ama.
sayi++;
Invoke((MethodInvoker)delegate()
{
label1.Text = "" + sayi;
});
}
private **** trackBar1_Scroll(object sender, EventArgs e)
{
//trackBar1 temel değerlerini değiştirmedim. minValue 0, maxValue 10
//1000 ekliyorum ki süre 0 olmasın.
int sure = trackBar1.Value * 1000 + 1000;
//change fonksiyonunun ilk parametresi bir dahaki sefere ne zaman işleyeceği,
//ikincisi de yeni aralık süresi
timer.Change(sure, sure);
}
}