我正在使用C#Windows服务应用程序,其中我有一个包含存储过程的对象。
public class Sp
{
public int Id { get; set; }
public string Name { get; set; }
public int IntervalMin { get; set; }
public DateTime LastRun { get; set; }
}
现在我正在使用此方法检查是否该运行时间:
public bool TimeToRun()
{
return ((IntervalMin * 60) <= (DateTime.Now - LastRun).TotalSeconds);
}
我遇到的问题是,当服务在周末休息并在星期一醒来时TimeToRun
对所有人都是真的(考虑IntervalMin
并不高)。
例如,有一个Sp IntervalMin = 1440
(应该每天运行一次),并且让我们说LastRun
是星期五14:00,星期一当服务在03:00醒来时将运行,但我希望它尽可能接近14:00。
您有关于如何构建此类计划的任何提示吗?我是否需要使用我设置的更多属性?如果它像+/- 5分钟甚至更长时间都没问题。每隔一秒检查一次TimeToRun()
。
LastRun
目前设为Datetime.Now
,但我想使用AddMinutes
不会造成额外延误。
LastRun = LastRun.AddMinutes(IntervalMin)