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

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();
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值