码迷,mamicode.com
首页 > Web开发 > 详细

定时任务调度Quartz.NET

时间:2015-11-05 22:31:44      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:

你想让你的应用程序在凌晨一点自动干一些别的事情吗?或者说没隔一段时间来执行一些任务 使用Quartz.NET

下面用最短的时间带你入门 并可以应用各种定时场景

首先你要在你的项目中导入需要用到的包 可以通过Nuget安装Quartz.NET

先介绍三个名词 调度者(IScheduler) 、工作(IJobDetail)、触发器(ITrigger) 

你要先创建一个调度者 , 一个工作, 一个触发器 

我们也可以定义多个工作 ,多个触发器 ,让我们的调度者在触发器满足条件的时候去执行我们的工作

//实例化一个调度者

IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();  

 

 //启动

scheduler.Start();     

 

//定义我们的任务 HelloJob这个类要实现IJob接口 在里面写我们要做的工作                   

IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("job1", "group1")
.Build();

class HelloJob : IJob
    {

        public void Execute(IJobExecutionContext context)
        {
            Console.WriteLine("123");
        }
    }

接下来我们要定义一下触发器 让我们触发器在符合条件的时候去执行我们的Job

 /*
            ITrigger trigger = TriggerBuilder.Create()
                    .WithIdentity("trigger1", "group1")
                    .StartNow()
                    .WithSimpleSchedule(x => x
                        .WithIntervalInSeconds(5) //每隔5秒执行一次
                        .RepeatForever())
                    .Build();
 //*/
 /*
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("trigger1", "group1").WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(18, 44))//每天的18点44分执行一次
                .ForJob(job)
                .Build();
//*/
 /*
            TimeSpan offset = DateTime.Now - DateTime.UtcNow;
            ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create()
                .WithIdentity("trigger1", "group1")
                .StartAt(new DateTimeOffset(2015, 11, 5, 18, 53, 59, offset)) // 指定一个时间去执行不重复  比如会议前两天给用户发送邮件 
                .ForJob("job1", "group1") 
                .Build(); 
 //*/
/*
            ITrigger trigger = TriggerBuilder.Create()
                 .WithIdentity("trigger1", "group1")
                .WithSimpleSchedule(x => x
                    .WithIntervalInSeconds(2)
                    .RepeatForever())
                .EndAt(DateBuilder.DateOf(19, 2, 1))//立刻执行 两秒钟一次 指定时间停止
                .Build(); 
 //*/

上面这四种触发器可以应用在不同的场景中

//调度工作

scheduler.ScheduleJob(job, trigger);

 

定时任务调度Quartz.NET

标签:

原文地址:http://www.cnblogs.com/bidianqing/p/4940913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!