Я опробовал функциональность DisallowConcurrentExecution в Quartz.NET, но обнаружил, что она ведет себя немного странно.
Допустим, у меня задание Quartz.NET запланировано запускать каждую 1 минуту.Затем он спит в течение 90 секунд и заканчивается.Атрибут [DisallowConcurrentExecution] гарантирует, что все, кроме первых выполнений, будут давать сбой.
Я хочу, чтобы, как только планировщик освободился (в 1:30), выполнялось следующее задание, и когдаодин заканчивается (через 3 минуты), следующий стартует и так далее.Вместо этого я нахожу следующее:
Он делает то, что мне нужно, только половину времени, каждый раз, когда планировщик просто бездействуетна целую минуту, пока пропускается все больше и больше исполнений.
После небольшого прочтения я подумал, что это была «умная политика», стандартная техника обработки пропусков зажигания.Я попытался установить конкретные, но они не достигли того, что я сказал выше.Даже WithMisfireHandlingInstructionNowWithRemainingCount()
не работал (см. Скриншот), который в соответствии с документами для Java-версии должен
перепланировать "сейчас" (...) с повторениемсчетчик установлен на то, что было бы, если бы он не пропустил ни одного выстрела.
Итак, я что-то упускаю, другой вариант или предостережение, или это ошибка на конце Кварца?Если последнее, есть ли обходной путь?