Quartz.net解雇以前安排的工作

时间:2012-05-02 18:46:41

标签: c# .net quartz.net

我刚开始使用Quartz.net。我写了一个小例程来安排多个工作。我真的不确定我是否正确编码。希望有一些Quartz.NET专家可以提供帮助。我有三个问题:

  1. 我的触发设置是否正确?我希望每天上午9点和下午3点都能找到一份工作(我知道你看不到market.LocalOpenTime财产,但它今天的上午9点在上午9点,另一个对象有3点。

  2. 我注意到,当我运行程序时,它将始终运行9AM作业(过去安排)。无论如何,我可以关闭此功能?我在下午1点运行程序。我假设如果我在下午4点运行它,它将运行这两个过去的预定工作。

  3. 我怎样才能在工作日只运行这些工作?

    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 :(得分: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