vanilla161
vanilla161

Reputation: 375

Execute a job every N weeks between X and Y hour

I am using Quartz.NET library and I need to execute a job every two days and repeat it every two hours between 22 PM and 6 AM. I don't know how to achieve this. I tried all of triggers combining them with calendars to exclude other hours, but nothing works as I want. Any idea?

Upvotes: 0

Views: 309

Answers (2)

Reza Ahmadi
Reza Ahmadi

Reputation: 872

This is the answer.

        protected void Application_Start()
        { 
            //....
            EveryTwoWeek();
            //....
        }

        private void MainJob()
        {
            int hourNumber = 2;
            var schedFact = new Quartz.Impl.StdSchedulerFactory();

            var sched = schedFact.GetScheduler();

            sched.Start();

            var twoHourlyTriggerFrom22To6 = Quartz.TriggerUtils.MakeHourlyTrigger(hourNumber);
            twoHourlyTriggerFrom22To6.StartTimeUtc = System.DateTime.Now.Date.AddHours(22);
            twoHourlyTriggerFrom22To6.EndTimeUtc = System.DateTime.Now.Date.AddHours(22 + 8);

            var jobDetail = new Quartz.JobDetail("Method", methodType);
            sched.ScheduleJob(jobDetail, twoHourlyTriggerFrom22To6);
        }

        private void EveryTwoDays()
        {
            int dayNumber = 2;
            var schedFact = new Quartz.Impl.StdSchedulerFactory();

             var sched = schedFact.GetScheduler();

             sched.Start();

             var everyTwoDaysTrigger = Quartz.TriggerUtils.MakeImmediateTrigger(int.MaxValue, new System.TimeSpan(0, dayNumber * 24, 0, 0));

             everyTwoDaysTrigger.StartTimeUtc = System.DateTime.Now.Date;

             var jobDetail = new Quartz.JobDetail("MainJob", mainJobType);

             sched.ScheduleJob(jobDetail, everyTwoDaysTrigger);
        }

Upvotes: 2

sgmoore
sgmoore

Reputation: 16077

What about 0 0 0,2,4,6,22 1/2 * ? *

Strictly speaking, this isn't every two days, but on the 1st, 3rd, 5th etc of each month.

Upvotes: 0

Related Questions