700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Quartz.Net定时任务简单实用(实例)

Quartz.Net定时任务简单实用(实例)

时间:2018-11-23 16:45:09

相关推荐

Quartz.Net定时任务简单实用(实例)

一、是什么?

是一个定时任务框架

二、有Timer了,为什么需要用?

比Timer使用起来更灵活。例如:每个月最后一个星期天23:59分做什么事情,而Timer实现起来就会麻烦很多。

三、怎么用?

《一、无配置实现》

1. 下载引用3个DLL:Quartz.dll、Common.Logging.dll、Common.Logging.Core.dll

下载地址:/s/1eRC5Iwi

2.创建任务操作类:

1 public class TimingJob : IJob2 {3public void Execute(IJobExecutionContext context)4{5 //将要定时执行的逻辑代码写于此处6 Console.WriteLine(DateTime.Now.ToString()+"\t工作太久了,休息10分钟吧。");7}8 }

3.创建处理类、触发器类

1 class Program 2 { 3static void Main(string[] args) 4{ 5 ISchedulerFactory sf = new StdSchedulerFactory(); 6 IScheduler scheduler = sf.GetScheduler(); //创建调度实例 7 //创建任务实例 8 IJobDetail job = JobBuilder.Create<TimingJob>().WithIdentity(new JobKey("job1")).Build(); 9 //创建触发器实例10 ITrigger trigger = TriggerBuilder.Create().StartAt(DateTime.Now.AddSeconds(0)).WithCronSchedule("59 59 23 ? * 1L").Build();11 scheduler.ScheduleJob(job, trigger);//绑定触发器和任务12 scheduler.Start(); //启动监控13}14 }

《二、通过配置文件实现》

1. 下载引用3个DLL:Quartz.dll、Common.Logging.dll、Common.Logging.Core.dll

下载地址:/s/1eRC5Iwi

2. 创建工作类:

1 public class PrintTimeJob : IJob2 {3public void Execute(IJobExecutionContext context)4{5 Console.WriteLine(DateTime.Now.ToString()+"工作了很久,休息一会吧!");6}7 }

3. 工作类、触发器类的配置文件(quartz_jobs.xml)

1 <?xml version="1.0" encoding="utf-8" ?> 2 <job-scheduling-data xmlns="/JobSchedulingData" xmlns:xsi="/2001/XMLSchema-instance" version="2.0"> 3 <processing-directives> 4<overwrite-existing-data>true</overwrite-existing-data> 5 </processing-directives> 6 <schedule> <!--工作类配置--> 7<job> 8 <name>PrintTimeJob</name> 9 <group>PrintGroup</group>10 <description>RecyclingResourcesJob</description>11 <job-type>SettingMothod.PrintTimeJob, SettingMothod</job-type>12 <durable>true</durable>13 <recover>false</recover>14</job> 15<trigger><!--触发器类配置-->16 <cron>17 <name>PrintDateTimeTrigger</name>18 <group>PrintDateTimeTriggerGroup</group>19 <job-name>PrintTimeJob</job-name>20 <job-group>PrintGroup</job-group>21 <cron-expression>59 59 23 ? * 1L</cron-expression> //22 </cron>23</trigger>24 </schedule>25 </job-scheduling-data>

4. 设置配置文件(App.config)

1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <configSections> 4<section name="quartz" type="System.Configuration.NameValueSectionHandler"/> 5 </configSections> 6 <quartz> 7<add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler"/> 8<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz"/> 9<add key="quartz.threadPool.threadCount" value="10"/>10<add key="quartz.threadPool.threadPriority" value="2"/>11<add key="quartz.jobStore.misfireThreshold" value="60000"/>12<add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz"/>13<!--******************************Plugin配置*********************************************-->14<add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz" />15<add key="quartz.plugin.xml.fileNames" value="~/quartz_jobs.xml"/>16 </quartz>17 </configuration>

5. 实例化、启动任务调度。

1 class Program 2 { 3static void Main(string[] args) 4{ 5 ISchedulerFactory sf = new StdSchedulerFactory(); 6 IScheduler sched = sf.GetScheduler(); //创建调度实例 7 sched.Start(); //开启调度 8 Console.WriteLine("启动成功 "); 9 Console.ReadKey();10}11 }

初次写博客,不足之处请多多指教。

本文源码:/s/1qXS0vUG

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。