Döngü kullanarak çoklu zamanlayıcılar oluşturdum ve zamanlayıcılar karşılık gelen etiketlere daldırıldı. Eğer "n" tuşuna basarsam, "n" zamanları oluşturulacak. Bu kod, çalışma zamanı sırasında geri sayımda hata gösteriyor. Her zamanlayıcı farklı aralıklarla azalmaktadır. Bu sorunu nasıl çözebilirim?C# windows uygulama formunda çoklu geri sayım zamanlayıcıları nasıl oluşturulur?
public Dictionary<Timer, Label> dict = new Dictionary<Timer, Label>();
int n = 1;
int timesec = 10;
private void CreateTimers()
{
for (int i = 1; i <= n; i++)
{
Timer timer = new Timer();
timer = new System.Windows.Forms.Timer();
timer.Tick += new EventHandler(timer_Tick);
timer.Interval = (1000);//1 sec
Label label = new Label();
label.Name = "label" + i;
label.Location = new Point(0, 100 + i * 30);
label.TabIndex = i;
label.Visible = true;
this.Controls.Add(label);
dict[timer] = label;
timer.Enabled = true;
timer.Start();
}
private void button2_Click(object sender, EventArgs e)
{
//function call
CreateTimers();
n++;
}
private void timer_Tick(object sender, EventArgs e)
{
//timer countdown
Timer t = (Timer)sender;
timesec--;
if (timesec == 0)
t.Stop();
dict[t].Text = timesec.ToString();
}
Bize hata mesajı gösterebilir:
, aşağı böyle bir şey sayısını göstermek için etiketin değerini kullanarak deneyin? Ayrıca zamanlayıcılar arasında 'timesec 'paylaşıyorsunuz. Birden fazla zamanlayıcı kullanmanın tam olarak ne istediğini tam olarak açıklayabilir misiniz, belki de en iyi fikir değildir. – gzaxxYalnızca bir * Timer kullanın, tek işi etiketleri güncellemektir. Aralığı özelliği kritik değil, 45 msn yeterince hızlıdır. Her etiket için, zamanlamaya başladığınızda DateTime.UtcNow değerini saklayın. Ve bunu ne zaman geçtiğini bilmek için güncellediğinizde DateTime.UtcNow öğesinden çıkarın. –