【问题标题】:windows service timer set to weeklyWindows 服务计时器设置为每周
【发布时间】:2013-02-19 09:15:58
【问题描述】:

我有一个运行多个定时功能的 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();

如何将计时器设置为每周发生一次,或者更好地将其设置为每周一天的特定时间,而不使用 quatrz/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();
     }
}

【问题讨论】:

  • " 不使用 quatrz/windows 调度程序"。 坏主意。
  • 好的任何建议最好/最简单的方法来实现石英在这种方法,因为我之前没有运气尝试过
  • 如果您将AddHours(10) 更改为AddDays(7),您就有了自己问题的答案。
  • 好的,谢谢,假设我添加 7 天 10 小时并在星期一启动服务,它将每周一运行 10 时钟
  • 是的。我个人会定义一个变量nextRun 而不是lastRun,因此您可以指定下一次运行的时间,与您启动服务的时间无关。

标签: c# service timer


【解决方案1】:

不使用 quatrz/windows 调度程序或太不同的方法。

为什么要重新发明轮子,可怜?无论如何,每周计时器不会有多大好处。如果您将计时器编码为等待一周,并且机器在一周中途重新启动以进行更新怎么办?计时器将再次开始等待一周。

你最好让它以小的间隔运行,并检查每次是否该运行你想要的方法。这样,您可以预先计算“事件时间”并每次检查它。

【讨论】:

  • 原因是我曾经尝试过实施石英,但没有直接找到它。也许你可以告诉我最好的方法和该怎么做?我在网站上尝试了以下教程
  • @Beginner 我认为 CodeCaster 意味着您设置,比如说,一个每小时计时器,它检查一个 DateTime 变量,该变量存储了例程应该运行的下一个日期和时间。如果日期和时间已过去,则运行该方法并更新 DateTime 变量以供下次运行。
  • 有点像我第一次做的事?请参阅添加到问题中的补充内容
  • @Beginner 是的,请在此处查看我的附加评论。
猜你喜欢
  • 1970-01-01
  • 2017-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 2011-03-30
相关资源
最近更新 更多