Quartz.net 触发先前计划的作业
本文关键字:计划 作业 net Quartz | 更新日期: 2023-09-27 18:33:02
我刚开始使用 Quartz.net。我写了一个小例程来安排多个作业。我真的不确定我是否正确编码了这个。希望有一些 Quartz.NET 专家可以提供帮助。我有三个问题:
-
我的触发器设置看起来是否正确?我想每天上午 9 点和下午 3 点运行一个作业(我知道你看不到
market.LocalOpenTime
属性,但它总是今天的日期是上午 9 点,另一个对象有下午 3 点。 -
我注意到当我运行该程序时,它将始终运行 9AM 作业(过去计划)。无论如何,我可以关闭此功能吗?我在下午 1 点运行了该程序。我假设如果我在下午 4 点运行它,它将运行这两个过去的计划作业。
-
如何仅在工作日运行这些作业?
foreach (IJob job in GetJobsToSchedule()) { i++; var market = (IMarket)job; IJobDetail jobDetail = new JobDetailImpl(market.JobName, null, market.GetType()); ITrigger trigger = new SimpleTriggerImpl(market.JobName, i.ToString(), market.LocalOpenTime, null, 1000, new TimeSpan(1, 0, 0, 0)); sched.ScheduleJob(jobDetail, trigger); }
1)您可能需要考虑使用时间表为0 0 9,15 * * ?
的CronTriggerImpl
。这将允许您使用 1 个触发器设置整个计划。这里有一个关于 cron 触发器的好教程(即使它是针对以前的 Quartz 版本):http://quartznet.sourceforge.net/tutorial/lesson_6.html
2) 将 myCronTrigger.MisfireInstruction
属性设置为"不执行任何操作"。文档说这个值应该在CronTriggerImpl
类中定义,但我没有看到它。在Visual Studio中使用IntelliSense可能会有更好的运气。
3) 查看上面 (1) 中的 Cron 教程链接。你可以使用这样的东西:0 0 9,15 * * MON-FRI