Если вы используете Quartz.NET, вы можете сделать что-то подобное в вашем методе Execute:
object execution_lock = new object();
public void Execute(JobExecutionContext context) {
if (!Monitor.TryEnter(execution_lock, 1)) {
return,
}
// do work
Monitor.Exit(execution_lock);
}
Я вытаскиваю это из головы, возможно, некоторые имена неверны, но в этом-то и заключается идея: заблокировать какой-либо объект во время выполнения, и если после выполнения блокировка включена, то предыдущее задание все еще выполняется а ты просто return;
РЕДАКТИРОВАТЬ: класс Monitor находится в пространстве имен System.Threading