在Quartz.Net中计划多个作业 [英] Schedule multiple jobs in Quartz.Net

查看:56
本文介绍了在Quartz.Net中计划多个作业的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是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中计划多个作业的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆