いくつかのタイマーを作成し、x 時間をカウントダウンし、独立して作業し、textBlock で時間を更新し、終了したら何かを実行したいと考えています。
だから私は書いた:
private DispatcherTimer d1, blueTimer;
private void but1_Click(object sender, RoutedEventArgs e)
{
if (redTimer == null)
{
d1 = new System.Windows.Threading.DispatcherTimer();
d1.Tick += new EventHandler(d1_Tick);
d1.Interval = new TimeSpan(0, 0, 1);
d1.Start();
}
}
private void but2_Click(object sender, RoutedEventArgs e)
{
if (d2 == null)
{
d2 = new System.Windows.Threading.DispatcherTimer();
d2.Tick += new EventHandler(d2_Tick);
d2.Interval = new TimeSpan(0, 0, 1);
d2.Start();
}
}
private void d1_Tick(object sender, EventArgs e)
{
int time = string2time(t1.Text);
if (time > 0)
{
t1.Text = time2string(--time);
}
else
{
d1.Stop();
}
}
private void d2_Tick(object sender, EventArgs e)
{
int time = string2time(t2.Text);
if (time > 0)
{
t2.Text = time2string(--time);
}
else
{
d2.Stop();
}
}
時間は、たとえば 15 秒です。but1をクリックすると時間がカウントダウンされ、t1が10秒のときにbut2をクリックすると、t2も10秒になり、カウントダウンも同じ時間になります。
なぜそれが起こるのですか?それを避ける方法は?