首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Quartz.Net CronTrigger调度未按预期工作

Quartz.Net CronTrigger调度未按预期工作
EN

Stack Overflow用户
提问于 2014-03-20 21:47:36
回答 1查看 1.8K关注 0票数 1
代码语言:javascript
复制
public static void ConfigureJob()
{
    int ScheduleTriggerDate = Convert.ToInt32(ConfigurationManager.AppSettings["ScheduleTriggerDate"]);

    ISchedulerFactory sf = new StdSchedulerFactory();
    IScheduler sched = sf.GetScheduler();


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

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

    sched.ScheduleJob(job, trigger);
    sched.Start();
}

我正在尝试在windows服务中安排Quartz.Net CronTrigger。我有上面的示例代码,我试图实现的是安排作业在每天的特定时间运行。在测试中,我发现上面的代码不可靠,有时它会运行,有时它只是静默地失败。

我在这里读了一些帖子,建议使用CronTrigger而不是上面示例中的简单触发器。

有没有人知道如何使用CronTrigger来实现上面的要求?或者,我如何改进上面的示例,使其在每天可以在app.config文件中设置的特定时间可靠地运行?

EN

回答 1

Stack Overflow用户

发布于 2014-03-21 01:26:03

使用CronScheduleBuilder轻松配置CronTrigger

代码语言:javascript
复制
// Extension method to round a date to a given part
var nextFire = DateTime.Now.Truncate(TimeSpan.FromHours(1));
var trigger = TriggerBuilder.Create()
           .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(nextFire.Hour, nextFire.Minute).WithMisfireHandlingInstructionFireAndProceed())
           .Build();

如果您更喜欢直接指定cron表达式(如您所提到的,从app.config文件):

代码语言:javascript
复制
// Runs every day at 9am in this example.
.WithSchedule(CronScheduleBuilder.CronSchedule("0 0 9 1/1 * ? *"))

您可以使用this site to calculate cron expressions

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22534978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档