1

我正在使用 Windows 服务,它们很难测试,所以想将其保留为空,仅导入类。

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

那么是否可以建立我自己的基本计时器类?

我该怎么办?如果可能的话,我想变得非常小和轻,几行代码。

4

3 回答 3

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

在这种情况下,您将不需要计时器组件

这是 .Net 中有关计时器的完整文章。此处讨论了不同类型计时器之间的完整比较。

于 2012-05-08T09:13:41.007 回答
2

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

于 2012-05-08T09:13:32.917 回答
0

线程.睡眠(1000*60*5); //填充,因为我的答案太小而且太轻。

.. 或者,为了让它更“Timer-ish”,添加一个 for 循环:

for(;;){
  timerEvent();
  Thread.Sleep(1000*60*5);
};
于 2012-05-08T09:18:32.567 回答