如何使触发器等待自己结束再次运行Quartz C#

时间:2017-05-12 19:26:28

标签: c# quartz.net

我正在使用Quartz 2.5.0.0

我有以下代码来运行我想要的任何工作。 我的所有工作都停留在一个文件夹中,因为我只是把它带到那里。

var scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();

var t = new ImportingLib.Importer();
t.DoImport();

foreach (var component in t.CallAllComponents())
{   
    var job = JobBuilder.Create(component)
        .WithIdentity(component.Name)
        .Build();

    var trigger = TriggerBuilder.Create()
   .WithIdentity($"{component.Name}Trigger")
   .StartNow()
   .WithSimpleSchedule(x => x
       .WithIntervalInSeconds(10)
       .RepeatForever())
   .ForJob(component.Name)
   .Build();
    scheduler.ScheduleJob(job, trigger);
}

我想让这个工作每10秒运行一次,但我必须等待自己结束,就在此之后,再次启动相同的工作。 一种了解胎面何时结束应该如何工作的方法,但我没有找到如何做到这一点。 知道我怎么能让它发挥作用?

1 个答案:

答案 0 :(得分:4)

我暂时没有与Quartz.NET合作过,但请尝试一下:

  1. 使用属性[DisallowConcurrentExecution]
  2. 装饰您的工作类
  3. 两次解雇工作。 Quartz应确保作业不会相互重叠。
  4. More Information Here