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文件中设置的特定时间可靠地运行?
发布于 2014-03-21 01:26:03
使用CronScheduleBuilder轻松配置CronTrigger
// 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文件):
// Runs every day at 9am in this example.
.WithSchedule(CronScheduleBuilder.CronSchedule("0 0 9 1/1 * ? *"))您可以使用this site to calculate cron expressions。
https://stackoverflow.com/questions/22534978
复制相似问题