你想让你的应用程序在凌晨一点自动干一些别的事情吗?或者说没隔一段时间来执行一些任务 使用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);
时间: 2024-10-06 23:07:40