在我們平時做開發(fā)的時候,時常會用到定時任務觸發(fā)某個特定邏輯業(yè)務以便數(shù)據(jù)能及時更新
如果你不想用Windows服務, 可以使用Quartz.Net在項目中編寫定時任務調(diào)度,簡簡單單幾行代碼就能搞定。
簡介:想要定時抓取、定時更新數(shù)據(jù)又不想使用windows服務,Quartz.Net組件將會是你最好的選擇。
下面來看下Quartz.Net使用方法,下面的DEMO只針對Quartz使用做出詳細說明,程序中一些其他邏輯沒編寫,請自行領悟。
1,將Quartz.dll引用到項目后,先在Web.config中configuration節(jié)點中設置定時所需節(jié)點
<configSections> <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"/> </configSections> <quartz> <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler" /> <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" /> <add key="quartz.threadPool.threadCount" value="10" /> <add key="quartz.threadPool.threadPriority" value="2" /> <add key="quartz.jobStore.misfireThreshold" value="60000" /> <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" /> </quartz>
2,編寫定時任務,處理定時邏輯
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Quartz; namespace PostDatas { public class TimeJob : IJob { /// <summary> /// 將要定時執(zhí)行的邏輯代碼寫于此處 /// 此處只做模擬,如需邏輯請自行編寫 /// 作者:hnxxbl.cn /// </summary> /// <param name="context"></param> public void Execute(IJobExecutionContext context) { //將要定時執(zhí)行的邏輯代碼寫于此處 PostHelper.HttpPostData(); } } }
3,在Global.asax中啟動當時任務、處理定時周期等參數(shù)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.SessionState; using Quartz; using Quartz.Impl; namespace PostDatas { public class Global : System.Web.HttpApplication { /// <summary> /// 調(diào)用定時任務 /// 作者:hnxxbl.cn /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Application_Start(object sender, EventArgs e) { ISchedulerFactory sf = new StdSchedulerFactory(); IScheduler scheduler = sf.GetScheduler(); IJobDetail job = JobBuilder.Create<TimeJob>().WithIdentity("job1", "mygroup").Build(); ITrigger trigger = TriggerBuilder.Create().StartAt(DateTime.Now.AddSeconds(5)).WithCronSchedule("/2 * * ? * *").Build(); scheduler.ScheduleJob(job, trigger); scheduler.Start(); } protected void Session_Start(object sender, EventArgs e) { } protected void Application_BeginRequest(object sender, EventArgs e) { } protected void Application_AuthenticateRequest(object sender, EventArgs e) { } protected void Application_Error(object sender, EventArgs e) { } protected void Session_End(object sender, EventArgs e) { } protected void Application_End(object sender, EventArgs e) { } } }4,大功告成,只要編寫沒問題,程序啟動后,在設定的時間周期內(nèi)此定時任務就會按照時間周期去定時觸發(fā)。
如有不理解的,可以下載DEMO源碼體驗一下,為了更清晰看到執(zhí)行周期,請自行添加日志文件記錄執(zhí)行記錄。
C#使用Quartz.Net實現(xiàn)定時作業(yè)定時任務DEMO源碼
原文鏈接C#使用Quartz.Net實現(xiàn)定時作業(yè)定時任務DEMO源碼