在特定时间运行代码

时间:2015-06-24 10:43:40

标签: c# windows-services scheduling

我正在使用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)

0 个答案:

没有答案