C# Dispatchermer将在每次';过去的
我遵循了Dispatchermer上Head First C#的一个例子 我第一次按下按钮时,滴答声将增加1秒,但下一次单击按钮时,滴答声将每秒钟/滴答声增加2秒。第三次滴答声增加3秒,以此类推(每按一次按钮增加1秒) 为什么会这样?我如何“重置”股票代码间隔,使其每次只增加1秒 以下是代码:C# Dispatchermer将在每次';过去的,c#,xaml,windows-store-apps,dispatchertimer,C#,Xaml,Windows Store Apps,Dispatchertimer,我遵循了Dispatchermer上Head First C#的一个例子 我第一次按下按钮时,滴答声将增加1秒,但下一次单击按钮时,滴答声将每秒钟/滴答声增加2秒。第三次滴答声增加3秒,以此类推(每按一次按钮增加1秒) 为什么会这样?我如何“重置”股票代码间隔,使其每次只增加1秒 以下是代码: DispatcherTimer timer = new DispatcherTimer(); private void Button_Click_1(object sender, RoutedEv
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();
}
}
}
干杯
timer.Tick += timer_Tick;
这一行在每次按下按钮时将方法添加到eventhandler;在这个例子中,你做了一个i++来增加i。
当您有两个方法同时执行此操作时(因为计时器在您的时间间隔内滴答作响),则计时器的每滴答都会增加两个。您会继续为滴答事件添加事件处理程序。因此,第二次单击该按钮时,timer_Tick()方法将运行两次。当然不是你想要的。在构造函数中只订阅一次事件。并使用一个变量作为间隔属性值。您还可以在
CheckHappiness
中调用timer.Stop()
,这可能会导致计时器根据引发事件。。。代码..
不起作用