我正在使用 Windows 服务,它们很难测试,所以想将其保留为空,仅导入类。
我需要使用Timer每 5 分钟触发一次事件,但如果我使用计时器组件,我必须将它放在我的 Windows 服务上。
那么是否可以建立我自己的基本计时器类?
我该怎么办?如果可能的话,我想变得非常小和轻,几行代码。
我正在使用 Windows 服务,它们很难测试,所以想将其保留为空,仅导入类。
我需要使用Timer每 5 分钟触发一次事件,但如果我使用计时器组件,我必须将它放在我的 Windows 服务上。
那么是否可以建立我自己的基本计时器类?
我该怎么办?如果可能的话,我想变得非常小和轻,几行代码。
您可以使用System.Timers.Timer或System.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 中有关计时器的完整文章。此处讨论了不同类型计时器之间的完整比较。
你检查过 System.Threading.Timer 或 System.Timers.Timer 吗?这应该是你正在寻找的。
线程.睡眠(1000*60*5); //填充,因为我的答案太小而且太轻。
.. 或者,为了让它更“Timer-ish”,添加一个 for 循环:
for(;;){
timerEvent();
Thread.Sleep(1000*60*5);
};