Quartz.net在并发作业之间暂停

时间:2015-09-25 20:50:23

标签: c# quartz.net

我有一个工作将一些数据上传到ftp,它需要在它再次启动之前结束。因此我在类中使用了DisallowConcurrentExecution属性。现在我的问题是当作业完成时它没有等待另一个x秒,直到它再次开始。例如:

            ISchedulerFactory schedFact = new StdSchedulerFactory();


        IScheduler sched = schedFact.GetScheduler();
        sched.Start();



        IJobDetail job = JobBuilder.Create<HelloJob>()
            .WithIdentity("myJob", "group1")
            .Build();

        ITrigger trigger = TriggerBuilder.Create()
          .WithIdentity("myTrigger", "group1")
          .StartNow()
          .WithSimpleSchedule(x => x
              .WithIntervalInSeconds(5)
              .RepeatForever()
              .WithMisfireHandlingInstructionNextWithRemainingCount())
          .Build();

        sched.ScheduleJob(job, trigger);





    }}


[DisallowConcurrentExecution]
public class HelloJob : IJob
{
    public void Execute(IJobExecutionContext context)
    {
        Console.WriteLine("start");
        Thread.Sleep(5000);
        Console.WriteLine("end");


    }
}

这项工作开始,做了5秒钟并结束了。但是石英立即开始下一个工作,因为工作开始时计算了5秒。 那我怎么能实现呢 开始工作 - 做5秒钟的事情 - 结束 - 等待5秒 - 再次开始 - ...... 使用quartz.net的行为?

1 个答案:

答案 0 :(得分:0)

您可以创建一系列作业,而不是永远重复的作业。在执行作业结束时,安排它在5秒内执行。