使用Quartz.Net构建简单的计划任务

来源:互联网 发布:linux目录命令 编辑:程序博客网 时间:2024/06/14 11:30

1、简介

       本篇为大家介绍使用Quartz.Net实现计划任务的方法,Quartz本身已经拥有了强大的计划功能,但我们可以自定义策略的方式简单实现各种项目所需的自动化任务。


2、开发步骤

      下面就以C#开发为例,编写一个简单的计划,主要的开发过程如下:


1、下载Quartz

Quartz.NET 2.2.4 Released

2、编写一个简单的Program程序(用于在每天指定的时间执行特定的任务和自己的项目后台交互,执行查询、根据查询结果进行不同的业务处理、写入日志)

using ClosedAt6.Tasks;using Common.Logging;using Quartz;using Quartz.Impl;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ClosedAt6{    class Program    {        static void Main(string[] args)        {            ILog log = LogManager.GetLogger(typeof(ClosedAt6Task));            log.Info("------- Initializing -------------------");            // First we must get a reference to a scheduler            ISchedulerFactory sf = new StdSchedulerFactory();            IScheduler sched = sf.GetScheduler();            //---------------------------------------代码添加job和trigger            // 下一次循环的时间点                        DateTimeOffset startTime = DateBuilder.TodayAt(18, 0, 0); // 每晚六点
            IJobDetail job = JobBuilder.Create<ClosedAt6Task>()  // 创建Job               .WithIdentity("6 点后自动申请")               .Build();                         ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create() //创建触发器                                              .WithIdentity("trigger1")                                              .StartAt(startTime)                                              .WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever())                                              .Build();            // 安排任务            DateTimeOffset ft = sched.ScheduleJob(job, trigger);            var loggedinfo = string.Format("{0} will run at: {1} and repeat: {2} times, every {3} seconds", job.Key, ft.DateTime.ToString(), trigger.RepeatCount, trigger.RepeatInterval.TotalSeconds);            Console.WriteLine(loggedinfo);             log.Info(loggedinfo); //写日志            // Start up the scheduler (nothing can actually run until the             // 执行计划            sched.Start();        }    }}


0 0
原创粉丝点击