如何在预定义的时间后暂停Timer_Tick?

时间:2014-10-28 11:57:25

标签: c# asp.net timer

我正在开发一个Web应用程序。在这个应用程序中,我想在12分钟后暂停计时器滴答。我怎么能这样做?或者我可以在哪里指定时间以便计时器滴答暂停?

1 个答案:

答案 0 :(得分:0)

您可以使用回调中的状态对象来获取计时器实例。
然后,如果要停止计时器,则可以在回调内部进行检查。
您可以简单地计算滴答数并计算每个滴答中的经过时间:

    ...
    // Start the timer
    // you have to use this constructor if you want to
    // access the timer itself inside callback
    var timer = new Timer(Callback);
    timer.Change(100, period);
}

// Set desired period
private static int period = 100;

// Track elapsed time
private static int elapsed;

private static void Callback(object state)
{
    // update elapsed time
    ellapsed += period;

    // check if ellapsed is greater than 12min
    bool isElapsed = ellapsed >= 12 * 60 * 1000;

    if (!isElapsed) return;

    var timer = state as Timer;

    if ( timer != null)
        timer.Change(Timeout.Infinite, Timeout.Infinite);
}