QUARTZ.NET 一个定时任务框架

<1>

Quartz.NET-1.0.3文件下载地址 (这是老版本了,现在已经有新版本了。用法好像不一样了)

首先要添加Quartz.NET-1.0.3 文件下面的  bin/3.5/Release/Quartz/ 目录下面的Common.Logging.dll文件和Quartz.dll文件 然后添加引用。将连个文件引入到项目中来

using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 测试定时任务
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {

            /*
              QUARTZ.NET 是一个定时任务框架    概念: 计划者:IScheduler;  工作 IJob;   触发器:Trigger; 

              我们先得到一个计划者(IScheduler) 然后创建一个任务工作(IJob),把这个任务扔给计划者,并且告诉它在什么条件下(触发器Trigger)做这件事

              将要定时执行的任务的代码写到IJob接口的Execute方法中即可,时间到来的时候Execute方法会被调用

              CrondTrigger是通过Crond表达式设置的触发器,还有SimpleTrigger等简单的触发器,可以通过TriggerUtils的MakeDailyTrigger(每天执行一次),MakeHourlyTrigger(每小时执行一次) 等方法简化调用。
             */

            IScheduler sched;
            ISchedulerFactory sf = new StdSchedulerFactory();
            sched = sf.GetScheduler();  //这是一个计划者


            JobDetail job = new JobDetail("job1", "group1", typeof(TestJob));//TestJob为实现了IJob接口的类 ,需要我们自己定义的,那么我们就在项目下添加一个TestJob类。并让它去实现Ijob接口。
            DateTime ts = TriggerUtils.GetNextGivenSecondDate(null, 5);//5秒后开始第一次运行

            //TimeSpan interval =  TimeSpan.FromHours(1);//每隔1小时执行一次
            //TimeSpan interval = TimeSpan.FromSeconds(5); //每隔5秒钟执行一次

            //Trigger trigger = new SimpleTrigger("trigger1", "group1", "job1", "group1", ts, null,
            //SimpleTrigger.RepeatIndefinitely, interval);//每若干小时运行一次,小时间隔由appsettings中的IndexIntervalHour参数指定

            Trigger trigger = TriggerUtils.MakeDailyTrigger("tigger1", 0, 37); //(每天执行)让它在9点46的时候执行
            //Trigger trigger = TriggerUtils.MakeHourlyTrigger("tigger1",1,2);//(每小时执行)让它每间隔一小时执行两次次
            //Trigger trigger = TriggerUtils.MakeImmediateTrigger("tigger1",2,TimeSpan.FromSeconds(5));//(立即执行)5秒钟执行一次,总共执行2次。也就是说在10秒钟内执行了2次。执行完这两次后就不再执行了。

            //Trigger trigger = TriggerUtils.MakeMonthlyTrigger("tigger1",12,13,5);//(每月执行)在5月12日13点执行
            //等等,还有很多方法。
            trigger.JobName = "job1";
            trigger.JobGroup = "group1";
            trigger.Group = "group1";

            sched.AddJob(job, true);
            sched.ScheduleJob(trigger);
            sched.Start();


            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
            sched.Shutdown(true);

        }
    }
}


using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 测试定时任务
{
    class TestJob : IJob  //在这里我们让TestJob类继承IJob接口,并实现这个接口。我们看到其实这个接口里只有一个Execute方法。
    {
        public void Execute(JobExecutionContext context)
        {
            //throw new NotImplementedException();
            MessageBox.Show("任务执行啦!"); //我们就在这个方法里弹出一个“任务执行啦!”的窗口吧。
        }
    }
}




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。