2014-10-27 91 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; 
相關問題