• 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

  • 相关阅读:
    vector tips
    DataTable DataRow String Tips...
    Virtual Key Codes
    有关多线程的一些技术问题
    用异步的方式调用同步方法
    C#线程锁(下)
    C#线程锁(中)
    Web应用中并发控制的实现
    主题:数据库事务与并发(Hibernate)
    前端开发桌面终极工具(FastStone Capture)推荐(转)
  • 原文地址:https://www.cnblogs.com/hongdada/p/6546836.html
Copyright © 2020-2023  润新知