【发布时间】:2015-03-31 09:30:51
【问题描述】:
如何使用quartz.net 简单时间表创建每n 周触发一次的时间表?
【问题讨论】:
-
到目前为止你尝试了什么?????????
标签: c# .net quartz-scheduler quartz.net
如何使用quartz.net 简单时间表创建每n 周触发一次的时间表?
【问题讨论】:
标签: c# .net quartz-scheduler quartz.net
这样的事情可以解决问题
IScheduler sched;
private void ConfigureScheduler()
{
int nbweeks = 1;
int n = 24*7*nbweeks;
var schedFact = new StdSchedulerFactory();
sched = schedFact.GetScheduler();
var job = new JobDetailImpl("weeklyjob", null, typeof(Type));
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
var trigger = TriggerBuilder.Create()
.StartNow()
.WithSimpleSchedule(x=>x.RepeatForever().WithIntervalInHours(n))
.Build();
sched.ScheduleJob(job, trigger);
sched.Start();
}
只需根据您的需要更改 nbweeks,它将每 n 周运行一次
此解决方案将在每个月的第 14 天(第 2 周)触发一次,您可以随意更改第二周的日期
IScheduler schedd;
private void ConfigureScheduler()
{
var schedFact = new StdSchedulerFactory();
schedd = schedFact.GetScheduler();
var job = new JobDetailImpl("weeklyJob", null, typeof(Type));
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var cronScheduleBuilder = CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(14, 12, 0);
var trigger = TriggerBuilder.Create()
.StartNow()
.WithSchedule(cronScheduleBuilder)
.Build();
sched.ScheduleJob(job, trigger);
sched.Start();
}
更新 此代码将在每个月的第二个星期一触发
IScheduler schedd;
private void ConfigureScheduler()
{
var schedFact = new StdSchedulerFactory();
schedd = schedFact.GetScheduler();
var job = new JobDetailImpl("weeklyJob", null, typeof(Type));
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var cronScheduleBuilder = CronScheduleBuilder.CronSchedule("0 0 12 ? 1/1 MON#2 *");
var trigger = TriggerBuilder.Create()
.StartNow()
.WithSchedule(cronScheduleBuilder)
.Build();
sched.ScheduleJob(job, trigger);
sched.Start();
}
【讨论】: