Sno*_*owy 4 scheduled-tasks quartz.net c#-4.0
我已经完全以编程方式创建了Quartz.NET作业(没有配置文件等).它按计划运行很好.使用cron字符串初始化作业,每5分钟运行一次.我希望工作能够根据环境改变自己的时间表(例如,随着时间的推移会发生错误,因此cron应该更改为30分钟).
我正在努力确定写些什么
protected override void ExecuteInternal( IJobExecutionContext context )
Run Code Online (Sandbox Code Playgroud)
方法所以工作"改变自己".我是否在context.Scheduler属性中设置了一些内容?我是否必须去调度程序本身并终止该作业并重新创建它(虽然听起来有点沉重的代价)?
所有的想法都赞赏,谢谢.
小智 5
虽然我没有使用Quartz.NET,但我在Java项目中使用了Quartz,我认为它们是相似的.我已经实现了类似于您描述的解决方案.在executeInteral方法中,您可以访问jobexecution上下文.基本上它涉及创建一个新的触发器,然后重新安排工作(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
}
Run Code Online (Sandbox Code Playgroud)
沿着这些路线.希望这可以帮助.