zoukankan      html  css  js  c++  java
  • Net Quartz使用

    安装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:UserDataAdministratorDocumentsVisual Studio 2015ProjectsConsoleApplication2packages”
    已将程序包“Quartz.2.4.0”添加到文件夹“D:UserDataAdministratorDocumentsVisual Studio 2015ProjectsConsoleApplication2packages”
    已将程序包“Quartz.2.4.0”添加到“packages.config”
    已将“Quartz 2.4.0”成功安装到 ConsoleApplication2
    正在从文件夹“D:UserDataAdministratorDocumentsVisual Studio 2015ProjectsConsoleApplication2packages”中删除程序包“Quartz.2.5.0”
    已从文件夹“D:UserDataAdministratorDocumentsVisual Studio 2015ProjectsConsoleApplication2packages”中删除程序包“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

  • 相关阅读:
    Largest Rectangle in Histogram
    Valid Sudoku
    Set Matrix Zeroes
    Unique Paths
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Path Sum II
    Path Sum
    Validate Binary Search Tree
    新手程序员 e
  • 原文地址:https://www.cnblogs.com/hongdada/p/6546836.html
Copyright © 2011-2022 走看看