If you are new to Quartz.Net, I suggest you start with the Jay Vilalta Blog and the old one , where you will find many tutorials and useful information about Quartz.Net.
If you want to schedule several tasks in a console application, you can simply call Scheduler.ScheduleJob ( IScheduler ), passing the task and the trigger that you previously created:
IJobDetail firstJob = JobBuilder.Create<FirstJob>() .WithIdentity("firstJob") .Build(); ITrigger firstTrigger = TriggerBuilder.Create() .WithIdentity("firstTrigger") .StartNow() .WithCronSchedule("0 * 8-22 * * ?") .Build(); IJobDetail secondJob = JobBuilder.Create<SecondJob>() .WithIdentity("secondJob") .Build(); ITrigger secondTrigger = TriggerBuilder.Create() .WithIdentity("secondTrigger") .StartNow() .WithCronSchedule("0 0/2 * 1/1 * ? *") .Build(); Scheduler.ScheduleJob(firstJob, firstTrigger); Scheduler.ScheduleJob(secondJob, secondTrigger);
You can download a working example here .
UPDATE:
If you want to pause and / or restart a task, you can use PauseJob and ResumeJob (you can do the same for a trigger with PauseTrigger and ResumeTrigger ).
This is an example:
private static void Test001(IScheduler Scheduler) { IJobDetail firstJob = JobBuilder.Create<FirstJob>() .WithIdentity("firstJob") .Build(); ITrigger firstTrigger = TriggerBuilder.Create() .WithIdentity("firstTrigger") .StartNow() .WithSimpleSchedule(x => x.WithIntervalInSeconds(1).RepeatForever()) .Build(); IJobDetail secondJob = JobBuilder.Create<SecondJob>() .WithIdentity("secondJob") .Build(); ITrigger secondTrigger = TriggerBuilder.Create() .WithIdentity("secondTrigger") .StartNow() .WithSimpleSchedule(x=>x.WithIntervalInSeconds(1).RepeatForever()) .Build(); Scheduler.ScheduleJob(firstJob, firstTrigger); Scheduler.ScheduleJob(secondJob, secondTrigger); for (int i = 0; i < 300; i++) { System.Threading.Thread.Sleep(100); if (i == 100) { Scheduler.PauseJob(new JobKey("firstJob")); } else if (i == 200) { Scheduler.ResumeJob(new JobKey("firstJob")); } } }
Leftyx
source share