我想创建几个计时器,倒计时 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秒,倒计时时间相同。
为什么会这样?如何避免这种情况?