我可以使用没有定时器组件的定时器吗?

时间:2012-05-08 09:12:01

标签: c# .net windows-services timer

我正在使用Windows服务而且它们很难测试,所以我希望尽可能将它留空,只能导入类。

我需要使用计时器来每5分钟触发一次事件,但如果我使用计时器组件,我必须将它放在我的Windows服务上。

那么可以构建我自己的基本计时器类吗?

我该如何解决这个问题?我想要非常小而轻,如果可能的话会有几行代码。

3 个答案:

答案 0 :(得分:5)

您可以使用System.Timers.TimerSystem.Threading.Timer

来自MSDN

// Create a timer with a ten second interval.
System.Timers.Timer aTimer = new System.Timers.Timer(10000);

// Hook up the Elapsed event for the timer.
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

// Set the Interval to 2 seconds (2000 milliseconds).
aTimer.Interval = 2000;
aTimer.Enabled = true;

计时器已用事件处理程序

// Specify what you want to happen when the Elapsed event is 
// raised.
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
    Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
}

在这种情况下你不需要定时器组件

Here is the complete article on Timers in .Net。这里讨论不同类型的定时器之间的完全比较。

答案 1 :(得分:2)

您检查过System.Threading.Timer或System.Timers.Timer吗?这应该是你正在寻找的。

答案 2 :(得分:0)

Thread.sleep代码(1000 * 60 * 5); //填充因为我的答案太小而且很轻。

..或者,更多'Timer-ish'添加for循环:

for(;;){
  timerEvent();
  Thread.Sleep(1000*60*5);
};