打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C# 定时任务之Quartz.Net

       上一篇写到的使用windows任务计划程序来实现定时任务,但这种方式在开发过程中不是太灵活,很难满足我们时需时用;所以我们如果能在代码中来实现的话就会比较得心应手;

所以这篇来简单介绍下Quartz.Net这个任务调度系统的使用方式。

实现功能:

    • 使用Quartz.Net实现定时、定点触发

开发环境:

开发工具:Visual Studio 2013

.NET Framework版本:4.5

实现代码:

//首先需要先去从nuget下载Quartz引用到我们的项目//实现IInterruptableJob接口,实现我们需要操作的逻辑public class MyJob : IInterruptableJob    {        public void Execute(IJobExecutionContext context)        {            JobDataMap dataMap = context.JobDetail.JobDataMap;            string tag = dataMap.GetString("tag");            Form1.form1.AddText(tag+"-------"+DateTime.Now);        }        public void Interrupt()        {            throw new NotImplementedException();        }    }
    public static void StartJob()        {            //创建任务调度器            ISchedulerFactory schedulefactory = new StdSchedulerFactory();            IScheduler scheduler = schedulefactory.GetScheduler();            //启动任务调度器            scheduler.Start();
//创建任务作业
//指定时间触发 IJobDetail jobDetail = JobBuilder.Create<MyJob>().UsingJobData("tag", "jobDetail").Build();
//间隔时间触发 IJobDetail jobDetail2 = JobBuilder.Create<MyJob>().UsingJobData("tag", "jobDetail2").Build();
//创建触发器 DateTime dt = DateTime.Now.AddSeconds(10);
//指定时间触发 //表达式含义可参考:http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/crontrigger.html string t = string.Join(" ", dt.Second, dt.Minute, dt.Hour, dt.Day, dt.Month, "?", dt.Year);
var cronTrigger = TriggerBuilder.Create() .WithSchedule(CronScheduleBuilder.CronSchedule(t).InTimeZone(TimeZoneInfo.Local)) .Build();
//间隔时间段触发 //WithRepeatCount表示重复的次数,第一次执行不算重复次数,所以最终执行次数为设置的重复次数+1 var cronTrigger2 =TriggerBuilder.Create() .WithSimpleSchedule(s => s.WithIntervalInSeconds(4).WithRepeatCount(3)).Build();

IDictionary<IJobDetail, Quartz.Collection.ISet<ITrigger>> dic = new Dictionary<IJobDetail, Quartz.Collection.ISet<ITrigger>>(); dic.Add(jobDetail, new Quartz.Collection.HashSet<ITrigger> { cronTrigger }); dic.Add(jobDetail2, new Quartz.Collection.HashSet<ITrigger> { cronTrigger2 });
//把作业,触发器加入调度器 scheduler.ScheduleJobs(dic, true); }
//最后调用StartJob方法即可 private void btnQuartz_Click(object sender, EventArgs e) { StartJob(); }

实现效果:

我这里用winform来做这个测试,当然我认为这并不太合适。

此篇只是介绍了下Quartz.Net简单的使用方法,还有其他更高级的功能大家可以去官网自行学习。

由简入繁,拿来即用

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java Web应用中的任务调度
Quartz使用(一)-入门使用
用 Quartz 进行作业调度
Quartz在Spring中如何动态配置时间
定时任务框架Quartz详解-基础篇
springboot整合Quartz实现动态配置定时任务
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服