安装Quartz
已经先安装了2.5版本,现在换成2.4
程序包管理器控制台:
PM> Install-Package Quartz -Version 2.4 正在尝试收集与目标为“.NETFramework,Version=v4.5.2”的项目“ConsoleApplication2”有关的包“Quartz.2.4.0”的依赖项信息 正在尝试解析程序包“Quartz.2.4.0”的依赖项,DependencyBehavior 为“Lowest” 正在解析操作以安装程序包“Quartz.2.4.0” 已解析操作以安装程序包“Quartz.2.4.0” 已从“packages.config”中删除程序包“Quartz.2.5.0” 已从 ConsoleApplication2 成功卸载“Quartz.2.5.0” GET https://api.nuget.org/packages/quartz.2.4.0.nupkg OK https://api.nuget.org/packages/quartz.2.4.0.nupkg 136ms 正在安装 Quartz 2.4.0。 正在将程序包“Quartz.2.4.0”添加到文件夹“D:\UserData\Administrator\Documents\Visual Studio 2015\Projects\ConsoleApplication2\packages” 已将程序包“Quartz.2.4.0”添加到文件夹“D:\UserData\Administrator\Documents\Visual Studio 2015\Projects\ConsoleApplication2\packages” 已将程序包“Quartz.2.4.0”添加到“packages.config” 已将“Quartz 2.4.0”成功安装到 ConsoleApplication2 正在从文件夹“D:\UserData\Administrator\Documents\Visual Studio 2015\Projects\ConsoleApplication2\packages”中删除程序包“Quartz.2.5.0” 已从文件夹“D:\UserData\Administrator\Documents\Visual Studio 2015\Projects\ConsoleApplication2\packages”中删除程序包“Quartz.2.5.0” PM>
using Quartz; using Quartz.Impl; namespace ConsoleApplication2 { public class Program { static void Main(string[] args) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH;mm:ss:ffff")); //1.首先创建一个作业调度池 ISchedulerFactory schedf = new StdSchedulerFactory(); IScheduler sched = schedf.GetScheduler(); //2.创建出来一个具体的作业 IJobDetail job = JobBuilder.Create<JobDemo>().Build(); //3.创建并配置一个触发器 ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create().WithSimpleSchedule(x => x.WithIntervalInSeconds(3).WithRepeatCount(int.MaxValue)).Build(); //4.加入作业调度池中 sched.ScheduleJob(job, trigger); //5.开始运行 sched.Start(); Console.ReadKey(); } } public class JobDemo : IJob { /// <summary> /// 这里是作业调度每次定时执行方法 /// </summary> /// <param name="context"></param> public void Execute(IJobExecutionContext context) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH;mm:ss:ffff")); } } }
设置一个运行时间范围:
using Quartz; using Quartz.Impl; namespace ConsoleApplication2 { public class Program { static void Main(string[] args) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH;mm:ss:ffff")); //1.首先创建一个作业调度池 ISchedulerFactory schedf = new StdSchedulerFactory(); IScheduler sched = schedf.GetScheduler(); //创建出来一个具体的作业 IJobDetail job = JobBuilder.Create<JobDemo>().Build(); //NextGivenSecondDate:如果第一个参数为null则表名当前时间往后推迟2秒的时间点。 DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddSeconds(1), 2); DateTimeOffset endTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddSeconds (30), 3); //创建并配置一个触发器 ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create().StartAt(startTime).EndAt(endTime) .WithSimpleSchedule(x => x.WithIntervalInSeconds(3).WithRepeatCount(100)) .Build(); //加入作业调度池中 sched.ScheduleJob(job, trigger); //开始运行 sched.Start(); Console.ReadKey(); } } public class JobDemo : IJob { /// <summary> /// 这里是作业调度每次定时执行方法 /// </summary> /// <param name="context"></param> public void Execute(IJobExecutionContext context) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH;mm:ss:ffff")); } } }
2017-03-14 09;39:48:5435 2017-03-14 09;39:50:0116 2017-03-14 09;39:53:0008 2017-03-14 09;39:56:0009 2017-03-14 09;39:59:0001 2017-03-14 09;40:02:0003 2017-03-14 09;40:05:0005 2017-03-14 09;40:08:0006 2017-03-14 09;40:11:0008 2017-03-14 09;40:14:0000 2017-03-14 09;40:17:0002 2017-03-14 09;40:20:0003
一共就执行了30秒,11次,本来是要执行100次的,但是时间到了。
复杂的调用,Cron表达式调用
查看3分钟之内,每分钟的第1秒,10秒,15,30,45,55秒执行作业。
using Quartz; using Quartz.Impl; namespace ConsoleApplication2 { public class Program { static void Main(string[] args) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH;mm:ss:ffff")); //1.首先创建一个作业调度池 ISchedulerFactory schedf = new StdSchedulerFactory(); IScheduler sched = schedf.GetScheduler(); //创建出来一个具体的作业 IJobDetail job = JobBuilder.Create<JobDemo>().Build(); //NextGivenSecondDate:如果第一个参数为null则表名当前时间往后推迟2秒的时间点。 DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddSeconds(1), 2); DateTimeOffset endTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddMinutes(3), 3); //创建并配置一个触发器 ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create().StartAt(startTime).EndAt(endTime) .WithCronSchedule("1,10,15,30,45,55 * * * * ? ") .Build(); //加入作业调度池中 sched.ScheduleJob(job, trigger); //开始运行 sched.Start(); Console.ReadKey(); } } public class JobDemo : IJob { /// <summary> /// 这里是作业调度每次定时执行方法 /// </summary> /// <param name="context"></param> public void Execute(IJobExecutionContext context) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH;mm:ss:ffff")); } } }
2017-03-14 09;50:04:3347 2017-03-14 09;50:10:0101 2017-03-14 09;50:15:0004 2017-03-14 09;50:30:0002 2017-03-14 09;50:45:0001 2017-03-14 09;50:55:0006 2017-03-14 09;51:01:0000 2017-03-14 09;51:10:0005 2017-03-14 09;51:15:0008 2017-03-14 09;51:30:0006 2017-03-14 09;51:45:0005 2017-03-14 09;51:55:0001 2017-03-14 09;52:01:0004 2017-03-14 09;52:10:0009 2017-03-14 09;52:15:0002 2017-03-14 09;52:30:0001 2017-03-14 09;52:45:0009 2017-03-14 09;52:55:0005 2017-03-14 09;53:01:0008
http://www.cnblogs.com/knowledgesea/p/4930469.html
http://www.cnblogs.com/mushroom/p/4067037.html
来源:https://www.cnblogs.com/hongdada/p/6546836.html