【问题标题】:Quartz.Net Cron trigger to repeat task each day for a duration of timeQuartz.Net Cron 触发器在一段时间内每天重复任务
【发布时间】:2012-01-02 21:26:29
【问题描述】:

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

在一周中的选定日期(例如周一、周三、周四)运行一项工作,并在这些日子的每一天重复此工作 X 小时或分钟,持续时间为 Y 分钟。

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

谢谢

【问题讨论】:

    标签: quartz.net


    【解决方案1】:

    如果问题是关于“如何创建仅在特定日期触发的触发器,在 X 小时/分钟内重复触发,间隔为 Y 分钟”,那么 Quartz.NET 1.0 就不可能。

    但是,如果您愿意使用 Quartz.NET 2.0(目前处于 beta 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();
    

    【讨论】:

      【解决方案2】:

      您无法声明工作持续时间,但您可以轻松地从工作中确定持续时间。

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多