我完全以编程方式创建了一个 Quartz.NET 作业(没有配置文件等)。它按计划运行良好。该作业使用 cron 字符串初始化,每 5 分钟运行一次。我想让作业根据环境更改其自身的计划(例如,随着时间的推移会发生错误,因此 cron 应该更改为 30 分钟)。
我正在尝试确定要写什么
protected override void ExecuteInternal( IJobExecutionContext context )
方法,让工作“改变自己”。我是否在 context.Scheduler 属性中设置了一些内容?我是否必须转到调度程序本身并终止作业并重新创建它(尽管对我来说听起来有点严厉)?
所有想法表示赞赏,谢谢。
虽然我没有使用过 Quartz.NET,但我在 Java 项目中使用过 Quartz,我认为它们是相似的。我已经实现了与您所描述的类似的解决方案。在executeInteral方法中,您可以访问作业执行上下文。基本上它涉及创建一个新的触发器,然后重新安排作业(rescheduleJob)。因此,当出现这种情况时,您会执行以下操作:
protected void ExecuteInternal( IJobExecutionContext context ) {
// ... some code
if (the_condition) {
// figure out startTime
// figure out endTime
// figure out repeat time
// figoure out repeatInterval
Trigger trigger = new SimpleTrigger("OurNewTrigger","GROUP_NAME", context.getJobDetail().getName(),context.getJobDetail().getGroup(), startTime, endTime,repeatTime,repeatInterval);
context.getScheduler().rescheduleJob("OurNewTrigger","GROUP_NAME",trigger);
}
// ... some more code
}
沿着这些思路。希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)