我刚开始使用Quartz.net。我写了一个小例程来安排多个工作。我真的不确定我是否正确编码。希望有一些Quartz.NET专家可以提供帮助。我有三个问题:
我的触发设置是否正确?我希望每天上午9点和下午3点都能找到一份工作(我知道你看不到market.LocalOpenTime
财产,但它今天的上午9点在上午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);
}
答案 0 :(得分:3)
1)您可能需要考虑使用CronTriggerImpl
,其时间表为0 0 9,15 * * ?
。这将允许您使用1个触发器设置整个计划。这是一个关于cron触发器的好教程(即使它是以前的Quartz版本):
http://quartznet.sourceforge.net/tutorial/lesson_6.html
2)将myCronTrigger.MisfireInstruction
属性设置为DoNothing。文档说这个值应该在CronTriggerImpl
类中定义,但我没有看到它。在Visual Studio中使用IntelliSense可能会有更好的运气。
3)查看上面(1)中的Cron教程链接。您可以使用以下内容:0 0 9,15 * * MON-FRI