问题描述
我是Quartz.Net的初学者.如何在计划程序中添加多个作业?
I am a beginner in Quartz.Net.How can I add multiple jobs in a scheduler?
为了学习,我正在使用控制台应用程序.
For the sake of learning I am using Console Application.
推荐答案
如果您是Quartz.Net的新手,我建议您从Jay Vilalta的和旧的一个,您可以在其中找到有关Quartz.Net的大量教程和有用信息.
If you're new to Quartz.Net I would suggest you to start with Jay Vilalta's Blog and the old one where you can find loads of tutorials and useful infos about Quartz.Net.
如果要在控制台应用程序中计划多个作业,则可以简单地调用 Scheduler.ScheduleJob
( IScheduler ),以传递作业和您先前创建的触发器:
If you want to schedule multiple jobs in your console application you can simply call Scheduler.ScheduleJob
(IScheduler) passing the job and the trigger you've 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);
您可以在此处下载示例.
更新:
如果您想暂停和/或重新开始工作,可以使用 PauseJob
和 ResumeJob
(您可以对 PauseTrigger 进行相同的操作和
ResumeTrigger
).
If you want to pause and/or restart a job you can use
PauseJob
and ResumeJob
(you can do the same for a trigger with PauseTrigger
and ResumeTrigger
).
这是一个示例:
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"));
}
}
}
这篇关于在Quartz.Net中计划多个作业的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!