当前位置: 首页 > 知识库问答 >
问题:

Quartz.NET重新安排未按预期工作

叶鸿煊
2023-03-14

我已经编写了如下所示的重新调度代码。尽管时间表上写着“每120秒重复一次”,但在结束UpdateQuartzJobTrigger方法后,Execute()方法会立即被调用。

 class Model : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            Debug.WriteLine("Executing Job: " + DateTime.Now.ToShortTimeString());
            //Do some stuff
            UpdateQuartzJobTrigger(context);
        }
        private void UpdateQuartzJobTrigger( IJobExecutionContext context )
        {
            // Trigger the job to run now, and then every 120 seconds
            ITrigger trigger = TriggerBuilder.Create()
              .WithIdentity(context.Trigger.Key.Name, context.Trigger.Key.Group)
              .WithSimpleSchedule(x => x
                  .WithIntervalInSeconds(120)
                  .RepeatForever())
              .Build();
            var result = context.Scheduler.RescheduleJob(context.Trigger.Key, trigger);
        }
    }

共有1个答案

葛泳
2023-03-14

IMHO,最好的做法是不合并“execute”,然后重新安排Job。

WithIntervalInSeconds将“立即”开始...等待X秒,然后再次执行。它不会“延迟”X秒。

所以基本上,你完成了你的“工作”,然后立即重新安排它...但是因为没有延迟(正如@AM指出的那样),它会立即重新安排。

 类似资料:
  • 我有一个2.5 GB的数据帧。分区数为5000。我正在尝试重新分区,然后将其持久化。但是在我读取持久化数据之后,分区的数量正在改变。 我甚至尝试使用coalesce,但没有运气。有人能解释一下发生了什么吗?

  • 我目前正试图研究并发性,特别是“volatile”关键字。 通过声明计数器变量为volatile,所有对计数器变量的写入都将立即写回主存。此外,计数器变量的所有读取都将直接从主存中读取。下面是计数器变量的volatile声明的外观 和 当线程写入易失性变量时,不仅易失性变量本身会被写入主内存。此外,线程在写入易失性变量之前更改的所有其他变量也会刷新到主内存中。当一个线程读取一个易失性变量时,它还将

  • 我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它

  • 当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。

  • 我试图使用来传输我根据前面的问题设置的自定义标头。 我在文件中读到... 我的属性包括: