首页 > 解决方案 > 如何安排除周六和周日外每 10 分钟运行一次的 Quartz

问题描述

我无法自定义我的石英时间表,除周六和周日外,该时间表每 10 分钟运行一次。

请告诉我如何自定义我的时间表,除了周六和周日,每天每 10 分钟触发一次?

public partial class QuartzTest : Form , IJob
    {
        IScheduler sched = null;

        public QuartzTest()
        {
            InitializeComponent();
        }

        public void Execute(IJobExecutionContext context)
        {
            MessageBox.Show("job start");
        }

        private void QuartzTest_Load(object sender, EventArgs e)
        {
            // construct a scheduler factory
            ISchedulerFactory schedFact = new StdSchedulerFactory();

            // get a scheduler
            sched = schedFact.GetScheduler();
            sched.Start();

            IJobDetail job = JobBuilder.Create<QuartzTest>()
                .WithIdentity("myJob", "group1")
                .Build();

            ITrigger trigger = TriggerBuilder.Create()
               .WithDailyTimeIntervalSchedule
                 (s =>
                    s.WithIntervalInHours(24)
                   .OnEveryDay()
                   .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(19, 07))
                 )
               .Build();

            sched.ScheduleJob(job, trigger);
        }

        private void QuartzTest_FormClosing(object sender, FormClosingEventArgs e)
        {
            sched.Shutdown();
        }
    }

}

请告诉我如何提及触发器应该在每 10 分钟后触发一次,并且忽略周六和周日。请分享帮助我实现目标的示例。谢谢

标签: c#quartz-scheduler

解决方案


您可以使用 cron 触发器。像这样的东西:

var trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "group1")
    .WithCronSchedule("* 0/5 * ? * MON-FRI")
    .ForJob("myJob", "group1")
    .Build();

在此处查找有关 cron 触发器的更多信息。您还可以发现此工具非常有用。


推荐阅读