-2

How can I create a schedule that fires every nth week, using quartz.net simple schedule?

Kalpa-W
  • 348
  • 3
  • 22

1 Answers1

0

Well something Like this would do the trick

  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();
}

just change nbweeks according to your needs and it will run every n week

this solution will fire once each month on the 14th day (2nd week) you can change the day of the second week as you please

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();
}

update This code will fire each second Monday of each month

 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();
}  
Coder1409
  • 523
  • 4
  • 12
  • this is interval in hours. How can I run it every nth week? – Kalpa-W Mar 31 '15 at 09:50
  • you have n=24*7(24 hours a day, 7 days a week this won't change for sure) by multiplying n*nthweek you will get what you want , I have been using this solution for its simplicity with hours , days and weeks – Coder1409 Mar 31 '15 at 09:54
  • This will fire every 2 weeks right? not the 2nd week of every month. I need the expression for every 2nd week of every month. Please help – Kalpa-W Mar 31 '15 at 10:09
  • is there a way to specifically fire on specific days of the 2nd week? – Kalpa-W Apr 01 '15 at 07:17
  • Check out My last update for this subject,, just use the information i gave to do what you want – Coder1409 Apr 01 '15 at 08:11