如何在windows服务中设置一天的计时器间隔



我创建了一个windows服务。在其中,我设置了每一分钟的计时器间隔,因此它每分钟都会触发,。但我需要每天都触发同样的。。

你可以在下面的代码中找到我在OnStart()方法中设置计时器间隔的代码。。

代码:

    protected override void OnStart(string[] args)
    {
        TraceService("start service");
        //handle Elapsed event
        timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
        //This statement is used to set interval to 1 minute (= 60,000 milliseconds)
        timer.Interval = 86400000;
        //enabling the timer
        timer.Enabled = true;
    }

这篇文章很老了,但我认为值得一提的是,与其使用86400000这样的神奇数字,不如使用新的TimeSpan(1,0,0).TotalMilliseconds,这样,如果有人需要更改它,他们就会知道应该更改什么。

所以,关于你的帖子有几件事:

首先,它没有说明问题出在哪里!

从技术上讲,Timer支持大约25天的定时器间隔。因此,您的代码应该可以工作。

如果你想超过25天,并且不关心线程安全,我建议你去System.Threading.Timer.

更多信息点击这里

由于您的服务是作为基于windows的服务运行的,我建议您转到System.Threading.Timer.

在C#中,现在可以使用TimeSpan类来获取一天中的总毫秒数,以设置每天的计时器。

var totalMilliSecondsPerDay = TimeSpan.FromDays(1).TotalMilliseconds;
var timer = new Timer(totalMilliSecondsPerDay);

最新更新