Запускать работу каждые X дней, но только между двумя конкретными датами и временем
Я думаю, что название говорит само за себя.
Я хотел бы запустить работу, которая начинается, например, с 19 июня 2014 года (например, в 7 часов утра), заканчивается 25 декабря 2015 года (например, в 23 часа) и выполняется каждые 9 дней между этими двумя датами. Я могу настроить его на работу без даты окончания. Но я не знаю, как включить все это в одно выражение.
Обновление: добавляет ли EndAt()
к моему TriggerBuilder
Работа?
mytrigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity(triggerName, triggerGroup)
.WithCronSchedule(cron)
.EndAt(xxxx)
.Build();
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;