Запускать работу каждые 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;
Другие вопросы по тегам