我從Quartz2.0開始使用,並對其進行了封裝了界面,能夠參考 http://www.cnblogs.com/ymnets/p/5065154.htmlhtml
最近拿出來進行了優化,並升級到最新版,溫故而知新嘛git
當初教程較少,而且是英文,如今不少地方都有中文的教程也是學習起來事半功倍github
他相似於SQL Server的代理與Timer定時器:sql
1.指定時間執行一條SQL語句或存儲過程數據庫
2.指定時間發送郵件(執行一個C#方法)windows
3.有規律的定時執行想要作的事情(經過配置Cron表達式來實現),如:每一個星期1,3,5給用戶發送一條短信學習
4.做業任務他能夠被暫停,掛起,中止優化
5.做業任務能夠遠程被操做管理,數據庫保存(支持多種數據庫包括:SqlServer,Sqlite,Oracle,Mysql,Firebird)ui
從Nuget包直接安裝便可spa
PM>Install-Package Quartz
咱們新建一個控制檯程序,並安裝Quartz包
入口代碼:
using Quartz; using Quartz.Impl; using System; namespace QuartzTest { class Program { static void Main(string[] args) { // First we must get a reference to a scheduler ISchedulerFactory sf = new StdSchedulerFactory(); IScheduler sched = sf.GetScheduler(); IJobDetail job = JobBuilder.Create<HelloJob>() .WithIdentity("job1", "group21") .Build(); //何時開始執行 DateTime runTime = DateTime.Now; ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartAt(runTime) .WithSimpleSchedule(x => x .WithIntervalInSeconds(1) //1秒一次真男人 .RepeatForever())//無限循環 .Build(); sched.ScheduleJob(job, trigger); //啓動任務 sched.Start(); } } }
using Quartz; using System; using System.Threading.Tasks; namespace QuartzTest { /// <summary> /// This is just a simple job that says "Hello" to the world. /// </summary> /// <author>Bill Kratzer</author> /// <author>Marko Lahma (.NET)</author> public class HelloJob : IJob { /// <summary> /// Called by the <see cref="IScheduler" /> when a /// <see cref="ITrigger" /> fires that is associated with /// the <see cref="IJob" />. /// </summary> public void Execute(IJobExecutionContext context) { Console.WriteLine("Hello Quartz"); // Say Hello to the World and display the date/time } } }
運行結果:
您也能夠用表達式的形式來運行:
ITrigger trigger2 = TriggerBuilder.Create() .WithIdentity("trigger2", "group1") .StartAt(runTime) .WithCronSchedule("/1 * * ? * *") //時間表達式,1秒一次 .Build(); sched.ScheduleJob(job, trigger2);
效果也是同樣的!
下面咱們來看一個類圖:
這個類圖描述了,Quartz運行的基本原理
咱們無須要刻意去背誦他表達式的含義http://cron.qqe2.com/ 界面展現的配置
能夠經過界面的操做來看到生成表達式,使用幾回就不多明白。
後臺封裝成界面,更加無須要去記得表達式,經過界面的配置便可
固然你須要知道字符表明的意思,如:*,?等符號,跟通配符有點相似,能夠百度
注:實際上咱們後面要作的功能也是基於這種界面,而後手選後將生成的表達式做爲運行的定時器而已
Quartz比Timer定時器好用多了,定時器還要部署windows任務
1.HelloJob集成了類圖中所示的IJob接口並實現了void Execute(IJobExecutionContext context);方法,這是必須的!
2.由StdSchedulerFactory.GetDefaultScheduler();來得到一個調度器
3.把任務加入到觸發器
4.開啓任務,自動跑起來
官方連接:
Quartz.Net官方2.X教程 http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/index.html
Quartz.Net源代碼 https://github.com/quartznet/quartznet
文章代碼:
連接:http://pan.baidu.com/s/1pKP6c2Z 密碼:dudi