我在DispatcherTimer上关注了Head First C#的一个例子。
我第一次按下按钮时,自动收报机将增加1秒,但是当我再次点击按钮时,自动收报机将每秒增加2秒钟。第三次自动收报机增加3秒,依此类推(每按一次按钮增加1秒)。
为什么会这样,以及如何“重置”自动收报机间隔,这样每次只会增加1秒?
这是代码:
DispatcherTimer timer = new DispatcherTimer();
private void Button_Click_1(object sender, RoutedEventArgs e)
{
timer.Tick += timer_Tick;
timer.Interval = TimeSpan.FromMilliseconds(1000);
timer.Start();
CheckHappiness();
}
int i = 0;
void timer_Tick(object sender, object e)
{
ticker.Text = "Tick #" + i++;
}
private async void CheckHappiness()
{
... code ..
timer.Stop();
}
}
}
干杯!
答案 0 :(得分:1)
timer.Tick += timer_Tick;
每次按下按钮时,此行都会将方法添加到事件处理程序中;你在其中做一个i +,它增加了一个。 如果有两种方法同时执行此操作(因为计时器在您的时间间隔内打勾),那么计时器的每个滴答都会增加两个。