欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

C# MVC Quartz.Net的使用_利用quartz实现定时任务调度

程序员文章站 2022-01-21 19:01:26
...

之前使用自动任务的,会写一个程序通过使用windows任务计划来调度,其实.net下有自动任务框架可以使用,一直没有拿来用,现在准备用下,所以找了些资料学习了下,记录下。安装Install-Package Quartz -Version 3.0.7 我使用的3.0.7的版本来进行测试。

主要是三个dll,Common.Logging.dll,Common.Logging.Core.dll,Quartz.dll,接下来就可以做简单的测试了,大概步骤如下:


1.继承作业接口Ijob建立job

2.建立作业调度器Scheduler

3.通过JobBuilder生成一个任务job

4.通过TriggerBuilder建立一个触发器trigger

5.将job和trigger加入调度器Scheduler中


创建一个任务 通过继承接口IJob需要实现Execute方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Quartz;
 
namespace quartzdemo
{
    public class demojob1:IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            Console.WriteLine("execute job");
        }
    }
}


创建调度器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Quartz;
using Quartz.Impl;
 
namespace quartzdemo
{
    public class demoscheule
    {
        public static void start(){
            //-------demo1 无参数 简单调用的方法-----------------
            ISchedulerFactory schedulefactory = new StdSchedulerFactory();//实例化调度器工厂
            IScheduler scheduler = schedulefactory.GetScheduler();//实例化调度器
            scheduler.Start();
            IJobDetail job1 = JobBuilder.Create<demojob1>()//创建一个作业
                .WithIdentity("demojob1", "groupa")
                .Build();
 
            ITrigger trigger1 = TriggerBuilder.Create()//创建一个触发器
                .WithIdentity("demotrigger1", "groupa")
                .StartNow()
                .WithSimpleSchedule(b => b.WithIntervalInSeconds(5)//5秒执行一次
                .RepeatForever())//无限循环执行
                .Build();
 
            scheduler.ScheduleJob(job1, trigger1);//把作业,触发器加入调度器
        }
    }
}


将此调度器执行

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace quartzdemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("job start");
            demoscheule.start();
            Console.ReadKey();
        }
    }
}


以上代码就可以执行了,其实还可以通过其它方式调用,比如使用JobDataMap或者是通过配置文件来进行任务调度都可以完成调度。另外在开发的过程中我还发现另外一个定时任务的插件:FluentScheduler,这个也非常好用,只需要几句代码就能搞定。

若资源对你有帮助,浏览后有很大收获,不妨小额打赏我一下,你的鼓励是维持我不断写博客最大动力。

想获取DD博客最新代码,你可以扫描下方的二维码,关注DD博客微信公众号(ddblogs)。

或者你也可以关注我的新浪微博,了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间,可以对该博文进行评论,希望不吝赐教。

为保证及时回复,可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问,祝你生活愉快、工作顺心、欢迎常来逛逛。