我可以在没有计时器组件的情况下使用计时器吗?

本文关键字:计时器 情况下 组件 我可以 | 更新日期: 2023-09-27 18:33:25

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

我需要使用计时器

每 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 ?这应该是你要找的。

Thread.Sleep(1000*60*5);//填充物,因为我的答案太小太轻。

.. 或者,要使其更"计时器",添加一个 for 循环:

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