如果你是新来Quartz.Net我建议你开始与周杰伦Vilalta的博客和旧的一个,你可以找到教程和有关Quartz.Net有用的相关信息的负荷.
如果要在控制台应用程序中安排多个作业,只需调用Scheduler.ScheduleJob(IScheduler)传递作业和先前创建的触发器:
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);
Run Code Online (Sandbox Code Playgroud)
你可以在这里下载一个工作示例.
更新:
如果您想暂停和/或重新启动,你可以使用一个作业PauseJob和ResumeJob(你可以用一个触发做同样的PauseTrigger和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"));
}
}
}
Run Code Online (Sandbox Code Playgroud)
萨拉姆.
我使用这个解决方案:
IJobDetail jobDetail = JobBuilder
.Create<ReportJob>()
.WithIdentity("theJob")
.Build();
ITrigger everydayTrigger = TriggerBuilder
.Create()
.WithIdentity("everydayTrigger")
// fires
.WithCronSchedule("0 0 12 1/1 * ?")
// start immediately
.StartAt(DateBuilder.DateOf(DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Day, DateTime.Now.Month, DateTime.Now.Year))
.Build();
ITrigger yearlyTrigger = TriggerBuilder.Create()
.WithIdentity("yearlyTrigger")
// fires
.WithCronSchedule("0 0 12 1 1 ? *")
// start immediately
.StartAt(DateBuilder.DateOf(DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Day, DateTime.Now.Month, DateTime.Now.Year))
.Build();
var dictionary = new Dictionary<IJobDetail, Quartz.Collection.ISet<ITrigger>>();
dictionary.Add(jobDetail, new Quartz.Collection.HashSet<ITrigger>()
{
everydayTrigger,
yearlyTrigger
});
sched.ScheduleJobs(dictionary, true);
Run Code Online (Sandbox Code Playgroud)
来自:https://stackoverflow.com/a/20419575/1676736
| 归档时间: |
|
| 查看次数: |
12273 次 |
| 最近记录: |