对于我正在编写的应用程序,我需要能够一次禁用按钮1.5秒.显示图像,用户单击按钮,然后显示另一个图像.我需要确保用户不会再太快点击按钮.
因此,当显示图像时,我调用此函数:
//when a new image is displayed, start the timer and disable the 'done' button
//for 1.5 seconds, to force people to stop pressing next so quickly
System.Timers.Timer mTimer;
void TimerStart() {
Done.IsEnabled = false;
mTimer = new System.Timers.Timer();
mTimer.Interval = 1500;
mTimer.Start();
mTimer.Elapsed += new System.Timers.ElapsedEventHandler(TimerEnd);
}
Run Code Online (Sandbox Code Playgroud)
TimerEnd代码如下所示:
void TimerEnd(object sender, EventArgs eArgs) {
if (sender == mTimer){
Done.IsEnabled = true;
mTimer.Stop();
}
}
Run Code Online (Sandbox Code Playgroud)
"Done.IsEnabled"行被点击,但按钮未重新启用,计时器不会停止触发.我在这做错了什么?如果重要,这是一个WPF应用程序.
请改用DispatcherTimer
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(someInterval);
timer.Tick += new EventHandler(someEventHandler);
timer.Start();
private void someEventHandler(Object sender, EventArgs args)
{
//some operations
//if you want this event handler executed for just once
// DispatcherTimer thisTimer = (DispatcherTimer)sender;
// thisTimer.Stop();
}
Run Code Online (Sandbox Code Playgroud)