1

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

  1. 我的触发器设置看起来正确吗?我想每天上午 9 点和下午 3 点运行一份工作(我知道您看不到该market.LocalOpenTime物业,但它始终是今天上午 9 点的日期,而另一个对象是下午 3 点。

  2. 我注意到当我运行程序时,它总是会运行上午 9 点的作业(过去安排的)。反正我可以关闭这个功能吗?我在下午 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);
    }
    
4

1 回答 1

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

于 2012-05-02T20:04:02.500 回答