我正在使用Windows服务而且它们很难测试,所以我希望尽可能将它留空,只能导入类。
我需要使用计时器来每5分钟触发一次事件,但如果我使用计时器组件,我必须将它放在我的Windows服务上。
那么可以构建我自己的基本计时器类吗?
我该如何解决这个问题?我想要非常小而轻,如果可能的话会有几行代码。
答案 0 :(得分:5)
您可以使用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);
}
在这种情况下你不需要定时器组件
Here is the complete article on Timers in .Net。这里讨论不同类型的定时器之间的完全比较。
答案 1 :(得分:2)
您检查过System.Threading.Timer或System.Timers.Timer吗?这应该是你正在寻找的。 p>
答案 2 :(得分:0)
Thread.sleep代码(1000 * 60 * 5); //填充因为我的答案太小而且很轻。
..或者,更多'Timer-ish'添加for循环:
for(;;){
timerEvent();
Thread.Sleep(1000*60*5);
};