使用DailyAtHourAndMinute()忽略Quartz.net StartNow()

时间:2015-09-15 12:16:35

标签: quartz.net

DailyAtHourAndMinute()有效,但为什么StartNow()会被忽略?

TriggerBuilder.Create().WithIdentity("engineTriggerII", engineGroup).StartNow().WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(0, 0)).Build();

版本2.3.3.0

1 个答案:

答案 0 :(得分:1)

这是预期的行为。

你告诉你的触发器每天午夜开火,所以它现在永远不会开火......除非你在午夜运行它。

我猜你必须创建2个触发器才能达到你想要的效果。

您可以使用以下代码检查触发器的运行时间:

private static void GetNextXFireTimes(ITrigger trigger, int counts)
{
    var dt = trigger.GetNextFireTimeUtc();

    for (int i = 0; i < (counts-1); i++)
    {
        if (dt == null)
        {
            break;
        }

        Console.WriteLine(dt.Value.ToLocalTime());

        dt = trigger.GetFireTimeAfter(dt);
    }
}

你可以在安排好工作后给它打电话:

Scheduler.ScheduleJob(job, trigger);
GetNextXFireTimes(trigger, 100);

你应该看到这样的东西:

18/09/2015 00:00:00 +01:00
19/09/2015 00:00:00 +01:00
20/09/2015 00:00:00 +01:00
21/09/2015 00:00:00 +01:00
22/09/2015 00:00:00 +01:00
23/09/2015 00:00:00 +01:00
24/09/2015 00:00:00 +01:00
25/09/2015 00:00:00 +01:00
26/09/2015 00:00:00 +01:00
27/09/2015 00:00:00 +01:00
28/09/2015 00:00:00 +01:00
29/09/2015 00:00:00 +01:00
30/09/2015 00:00:00 +01:00
01/10/2015 00:00:00 +01:00