Quartz.net 定时任务矿建Demo

1. 首先新建一个 window 控制台程序

2. 通过 nuget 的方式搜索并安装 Quartz 。 安装的时候回引入3个程序集 Quartz.dll 、Common.logging.dll 、 Common.logging.Core.dll 程序集
3. 穿件一个继承 IJob 的类,实现其中的 Excute() 方法,此方法中的内容就是制定时间内需要执行的任务。

 /// <summary>
    /// 具体的任务
    /// </summary>
    public class SampJob : Quartz.IJob
    {
        /// <summary>
        /// 每次需要执行的任务
        /// </summary>
        /// <param name="context">执行任务上下文</param>
        public void Execute(Quartz.IJobExecutionContext context)
        {
            Console.WriteLine(DateTime.Now.ToString("r") + "任务");
        }
    }

2. 在 program 程序中添加以下代码

 class Program
    {
        static void Main(string[] args)
        {
            // 1.0 创建一个作业调度池 -- 获取计划者
            ISchedulerFactory factory = new Quartz.Impl.StdSchedulerFactory();
            IScheduler scheduler = factory.GetScheduler();
            // 2.0 创建一个具体的作业
            IJobDetail job = JobBuilder.Create<SampJob>().Build();
            // 3.0 创建并配置一个触发器,每隔3秒钟执行一次,循环次数为 int 的最大值
            //ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create().WithSimpleSchedule(t => t.WithIntervalInSeconds(3).WithRepeatCount(int.MaxValue)).Build();

            // 3.1 创建并配置一个触发器, 引入 cron-like 表达式
            DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddSeconds(1), 2); //NextGivenSecondDate:如果第一个参数为null则表名当前时间往后推迟2秒的时间点。
            DateTimeOffset endTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddYears(2), 3);
            // 创建并配置一个触发器
            ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create().StartAt(startTime).EndAt(endTime).WithCronSchedule("1,10,14 10,20,25,26,33,54 * * * ? ").Build();

            // 4.0 加入作业 调度池中
            scheduler.ScheduleJob(job, trigger);
            // 5.0 开始运行
            scheduler.Start();
            Console.ReadKey();
        }
    }

 

posted on 2015-12-28 11:48  Mr.YM  阅读(484)  评论(1编辑  收藏  举报

导航