Как ответил TskTsk, вы можете реализовать IStatefulJob вместо IJob, но есть одна загвоздка!Если у вас есть задание, которое выполняется более 30 секунд (то есть у вас есть или больше заданий, ожидающих завершения этого задания), после его выполнения все ожидающие задания будут сработать немедленно!Чтобы преодолеть это, вам нужно создать новый класс, который реализует SimpleTrigger.Этот новый класс триггера должен был переопределить GetFireTimeAfter.
public class MyTrigger : SimpleTrigger
{
public MyTrigger(string name,
string group,
DateTime startTimeUtc,
DateTime? endTimeUtc,
int repeatCount,
TimeSpan repeatInterval) : base(name, startTimeUtc, endTimeUtc, repeatCount, repeatInterval)
{
}
public override DateTime? GetFireTimeAfter(DateTime? afterTimeUtc)
{
return DateTime.UtcNow.AddSeconds(RepeatInterval.TotalSeconds);
}
}
Таким образом, следующее задание не будет выполнено незамедлительно после завершения первого.