windows服务计时器设置为每周
本文关键字:每周 设置 计时器 服务 windows | 更新日期: 2023-09-27 18:00:09
我有一个运行有几个定时函数的windows服务:
_timer = new Timer(1 * 60 * 1000); // every 1 minute
_timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
_timer.Start();
_fbtimer = new System.Timers.Timer(48 * 60 * 60 * 1000);
_fbtimer.Elapsed += new System.Timers.ElapsedEventHandler(fbtimer_Elapsed);
_fbtimer.Start();
//Weekley Snapshot
_ventimer = new System.Timers.Timer(2 * 60 * 1000);
_ventimer.Elapsed += new System.Timers.ElapsedEventHandler(ventimer_Elapsed);
_ventimer.Start();
//Weekly Activity
_tevtimer = new System.Timers.Timer(2 * 60 * 1000);
_tevtimer.Elapsed += new System.Timers.ElapsedEventHandler(tevtimer_Elapsed);
_tevtimer.Start();
我如何将计时器设置为每周一次,或者更好地将其设置为每周某一天的特定时间,而不使用quadrz/windows调度器或过于不同的方法。
附加:这就是我每天在10 运行任务的方式
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//log.Info("Info - Check time");
DateTime startAt = DateTime.Today.AddHours(10);
if (_lastRun < startAt && DateTime.Now >= startAt)
{
_timer.Stop();
//Stuff
_lastRun = DateTime.Now;
_timer.Start();
}
}
而不使用quadrz/windows调度器或太不同的方法。
为什么要重新发明轮子,糟透了?不管怎样,一周一次的计时器不会有多大好处。如果你把计时器编码为等待一周,而机器在半周后重新启动以进行更新,该怎么办?计时器将再次开始等待一周。
你最好让它以很小的间隔运行,每次都检查是否到了运行你想要的方法的时候。通过这种方式,您可以预先计算"事件时间",并每次进行检查。