System.Timers.Timer:如何在启动间隔后引发已发生的事件?

时间:2016-08-05 12:36:51

标签: c# timer

我有简单的计时器:

private System.Timers.Timer _timer;
public Ctor()
{
      _timer = new System.Timers.Timer(timeout);
      _timer.Elapsed += Timer_Elapsed;
      _timer.Start();
}

如何在Elapsed时间到期后使计时器上升timeout事件? 当然,这是第一次过去的事件。

2 个答案:

答案 0 :(得分:2)

Timer完全符合您的要求,它会在指定的间隔过去后引发事件。如果您不希望它再次发生(仅运行一次),请设置AutoResetProperty

public Ctor()
{
      _timer = new System.Timers.Timer(timeout);
      _timer.AutoReset = false;
      _timer.Elapsed += Timer_Elapsed;
      _timer.Start();
}


private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
    // your code here runs after the timeout elapsed
}

答案 1 :(得分:0)

我认为你要求在最初的延迟后启动计时器?如果是这种情况,那么请考虑使用System.Threading.Timers.Timer,如下所示:

int initialDelay = 5000; // five seconds
int timerPeriod = 1000; // one second
var timer = new Timer(_ => MethodToCallWhenExpired(), null, initialDelay, timerPeriod);

或者您可以使用Timeout.Infinite然后调用Change()方法在创建后更改Timer行为。

很抱歉,如果那不是你要问的那个! :)