我有一个工作将一些数据上传到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的行为?
答案 0 :(得分:0)
您可以创建一系列作业,而不是永远重复的作业。在执行作业结束时,安排它在5秒内执行。