对于我正在编写的应用程序,我必须能够一次禁用按钮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);
    }


TimerEnd代码如下所示:

    void TimerEnd(object sender, EventArgs eArgs) {
        if (sender == mTimer){
            Done.IsEnabled = true;
            mTimer.Stop();
        }
    }


'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();
}

09-30 10:23