Quartz.NET基础入门

Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。

OK,我们来做个简单的例子:

首先,通过NuGet安装Quartz.NET

示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//引入命名空间
using Quartz;
using Quartz.Impl;

namespace QuartzDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化调度器
            ISchedulerFactory schedFact = new StdSchedulerFactory();
            var scheduler = schedFact.GetScheduler();
            //启动调度器
            scheduler.Start();

            //初始化要执行的任务
            var testJob = JobBuilder.Create<MessageLoadJob>().WithDescription("Job description").Build();
            //传入参数到任务中
            testJob.JobDataMap.Add("ParamKey", "ParamValue");

            //初始化任务的触发器(CronTrigger)
            ITrigger cronTrigger = TriggerBuilder.Create()
                .WithIdentity(Guid.NewGuid().ToString())
                .WithDescription("Trigger description")
                //0秒开始每五秒执行一次
                .WithCronSchedule("0/5 * * * * ? *")
                .Build();

            //初始化任务的触发器(SimpleTrigger)
            var simpleTrigger = TriggerBuilder.Create()
                .StartAt(DateTime.Now)
                .EndAt(DateTime.Now.AddDays(5))
                //每三秒执行一次
                .WithSimpleSchedule(c => 
            c.WithIntervalInSeconds(3)
            //.RepeatForever()
            .WithMisfireHandlingInstructionNextWithRemainingCount()
          ) .Build();
//将任务添加到调度器中 scheduler.ScheduleJob(testJob, cronTrigger); //scheduler.ScheduleJob(testJob, simpleTrigger); Console.Read(); } } //此属性防止任务并行 [DisallowConcurrentExecution] public class MessageLoadJob : IJob { public void Execute(IJobExecutionContext context) { var jobDataMap = context.JobDetail.JobDataMap; var paramValue = jobDataMap["ParamKey"] as string; Console.WriteLine(string.Format("{0} {1}", paramValue, DateTime.Now)); } } }

建议使用CronTrigger表达式定义触发器,灵活性比较高。

好文推荐:http://www.cnblogs.com/knowledgesea/category/719995.html

posted @ 2016-08-03 16:06  bky_xiaozhu  阅读(311)  评论(0编辑  收藏  举报