• 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

  • 相关阅读:
    C#中?、??与?:的使用
    循环的嵌套
    Linux中__init、__devinit等初始化宏
    AUPE学习第十章------信号
    C语言--const详解
    database is locked和SQLITE_BUSY
    vc6.0错误提示
    C/C++程序内存模型
    浅谈C中的malloc和free “来自bccn C语言论坛”
    Java几种内部类总结
  • 原文地址:https://www.cnblogs.com/zhuyongblogs/p/5733312.html
Copyright © 2020-2023  润新知