2014-08-19 2 views
1

Я пытаюсь создать работу с quartz.net, который будет работать в 1 месяцQuartz.Net триггер хрон планировать работу каждый месяц

Я немного запутался о том, как осуществить это, может кто-нибудь посоветовать на решение

спасибо

PS Я использую Кварц версии 2.2.2.400

Отредактировано: Я сделал ежедневный триггер

job = JobBuilder.Create<Jobs>() 
      .WithIdentity(Params.JobsKind.BlaBlaBla.ToString(), "group1") 
      .Build(); 

     trigger = TriggerBuilder.Create() 
      .WithIdentity("triggerBlaBlaBla", "group1") 
      .WithDailyTimeIntervalSchedule(x => x.StartingDailyAt(Params.BlaBlaBLa) 
       .WithIntervalInHours(24) 
       .OnEveryDay()) 
      .Build(); 

     sched.ScheduleJob(job, trigger); 

теперь мне нужно быть вызвано ежемесячно

+0

Любые усилия? Что вы пробовали? – Arion

+0

Вы действительно пробовали прочитать документацию? Люди говорят, что это помогает. http://www.quartz-scheduler.net/documentation/index.html –

+0

Я отредактировал тему, и я использовал приведенный выше код для ежедневного запуска, но мне нужно заранее заблаговременно заблаговременно благодарить – ra22

ответ

0

Я думаю, что вопрос обрабатывается сделать cronExpression и добавить его в качестве параметр CronScheduleBuilder.

код будет выглядеть следующим образом:

static CronScheduleBuilder cronSchedule; 

job = JobBuilder.Create<Jobs>() 
      .WithIdentity(Params.JobsKind.BlaBlaBla.ToString(), "group1") 
      .Build(); 

     CronExpression cexp = new CronExpression("0 50 10 1 * ?"); 
     cronSchedule = CronScheduleBuilder.CronSchedule(cexp); 
     trigger = TriggerBuilder.Create() 

       .WithIdentity("triggerBlaBlaBla", "group1") 
       .StartNow() 
       .WithSchedule(cronSchedule) 
       .Build(); 
     sched.ScheduleJob(job, trigger); 

Thnaks для тех, кто пытался помочь мне

0

Вы можете использовать CalendarIntervalSchedule, использование RepeatFrequency является 1

trigger1 = TriggerBuilder.Create() 
         .ForJob(jobDetail1) 
         .StartAt(startDate) 
         .EndAt(endDate) 
         .WithIdentity(triggerName, "group1") 
         .WithCalendarIntervalSchedule(x => x.WithIntervalInMonths(RepeatFrequency)) 
         .WithCalendarIntervalSchedule(x => x.WithMisfireHandlingInstructionFireAndProceed()) 
         .Build(); 
5

Это, как я внедрило мое решение, подобное вашему,

В основном CronScheduleBuilder класс имеет способ MonthlyOnDayAndHourAndMinute (день, час, минута), где вы вводите день, час и минуту для выполнения своей работы.

Он отлично работает и читается более человечно, если вы не используете рабочие места unix CRON. Надеюсь это поможет.

  // define the job and tie it to class 
      IJobDetail job_tcs = JobBuilder.Create<DuesFeedbackJob>() 
       .WithIdentity("job_tcs", "group1") 
       .Build(); 
      // Trigger the job to run every 2nd of the month at 1 am 
      ITrigger trigger_tcs = TriggerBuilder.Create() 
       .WithIdentity("Run Infinitely every 2nd day of the month", "Monthly_Day_2") 
       .StartNow() 
       .WithSchedule(CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(2, 1, 0)) 
       .Build(); 

      // Tell quartz to schedule the job using our trigger 
      Console.WriteLine("Scheduling " + job_tcs); 
      scheduler.ScheduleJob(job_tcs, trigger_tcs); 
Смежные вопросы