Quartz.Net Cron触发每天重复任务一段时间

时间:2011-12-24 19:20:27

标签: quartz.net

我正在尝试创建一个触发器:

在一周的选定日期(比如周一,周三,周四)运行一份工作,并在这几天的Y分钟内重复这个工作X小时或分钟。

我有一个在指定日期正确触发的cron触发器,但我无法让重复间隔工作。

感谢

2 个答案:

答案 0 :(得分:3)

如果问题是“如何创建仅在某些特定时间触发的触发器,在X小时/分钟内重复播放,并且间隔为Y分钟”,则Quartz.NET 1.0无法实现。

但是,如果您愿意使用Quartz.NET 2.0(目前处于测试阶段2),您可以使用日历和DailyTimeIntervalSchedule轻松完成:

        WeeklyCalendar cal = new WeeklyCalendar();
        cal.SetDayExcluded(DayOfWeek.Monday, true);
        sched.AddCalendar("excludedDays", cal, false, false);

        var trigger = TriggerBuilder.Create()
            .WithIdentity("test", "group")
            .WithDailyTimeIntervalSchedule(
                x => x.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(14, 0))
                         .EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(15, 0))
                         .WithIntervalInSeconds(5))
            .ModifiedByCalendar("excludedDays")
            .Build();

答案 1 :(得分:1)

您无法宣布工作时间,但您可以轻松地在工作中确定工作时间。

无论如何,根据您的规范安排作业的cron表达式是:

35 30 1/2 ? * MON,WED,THU *

1/2表示该作业将从凌晨1:30:35开始每2小时运行一次。

你可以在this useful website.上使用cron表达式它使用Quartz的原始Java版本来创建和验证表达式,但是.net版本是Java的一个端口,因此结果应该是有效的for quartz.net。