2014-10-27 45 views
0

我认为标题说明了一切。每隔X天运行一次工作,但只能在两个特定日期和时间之间运行

我想运行一项工作,例如,从2014年6月19日开始(例如上午7点),截止日期为2015年12月25日(例如下午11点),并在这两个日期之间每9天运行一次。我可以设置它在没有结束日期的情况下工作。但我不知道如何将它全部包含在一个表达式中。

更新: 是否添加EndAt()TriggerBuilder工作?

mytrigger = (ICronTrigger)TriggerBuilder.Create() 
    .WithIdentity(triggerName, triggerGroup) 
    .WithCronSchedule(cron) 
    .EndAt(xxxx) 
    .Build(); 
+0

向我们展示你的当前配置 – Martin 2014-10-27 16:05:39

+0

@马丁我想提的开始日期和时间在我的cron中,然后当我使用'TriggerBuilder'添加我的触发器时,我还添加了'endAt()'。这是一个好主意吗? – Disasterkid 2014-10-27 16:09:23

+1

我不完全确定你的意思是“在我的cron中提到开始日期和时间”,但是设置endAt将确保在结束之后触发器不会触发日期 – Martin 2014-10-27 16:23:09

回答

1

您的方向是正确的,需要通过cron表达式生成大量研究的时间表可以通过API轻松生成。例如,你想要的触发如下:

var startDate = new DateTime(2014, 06, 19, 7, 0, 0); 
    var endDate = new DateTime(2015, 12, 25, 23, 0, 0); 
    var cronExpression = "0 0 12 1/9 * ? *"; //every nine days 

    ITrigger trig = TriggerBuilder.Create() 
     .StartAt(startDate) 
     .WithCronSchedule(cronExpression) 
     .WithDescription("description") 
     .WithIdentity(triggerKey) 
     .WithPriority(1) 
     .EndAt(endDate) 
     .Build(); 

如果你想看到生成的cron表达式:

ICronTrigger trigger = (ICronTrigger)trig; 
    string cronExpression = trigger.CronExpressionString; 
相关问题