參考了:c# .net framework 4.5.2 , Quartz.NET 3.0.7 - runliuv - 博客園 (cnblogs.com)
https://www.cnblogs.com/personblog/p/11277527.html,
Quartz.NET 作業調度(一):Test - 簡書
自己要輪詢的任務:
using log4net;
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;namespace WzsrmyyApi.QuartzTask
{[DisallowConcurrentExecution]public class ReportJob : IJob{public Task Execute(IJobExecutionContext context){return Task.Run(() =>{foo();});}public static readonly ILog logger = LogManager.GetLogger("SendMsgJob");public void foo(){BigDataSupervisionBll bll = new BigDataSupervisionBll();BigDataSupervisionOtherBll otherBll = new BigDataSupervisionOtherBll();try{var dic = bll.SplitCount(otherBll.GetChargesRecordOneDay());int dictNum = 0; string type = "charges_record";for (int i = dictNum; i < dic.Count; i++){string data = dic[dictNum];var res = bll.PostData(type, data);logger.Info("日志");}}catch (Exception ex){//日志logger.Info("error " + ex);}}}
}
輪詢的任務的建立
using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;namespace WzsrmyyApi.QuartzTask
{public class ReportJobScheduler{public static async void Start(){try{string thisJob = "ReportJob";string groupName = "gp" + thisJob;string jobName = "job" + thisJob;string triggerName = "trigger" + thisJob;// 創建作業調度池ISchedulerFactory factory = new StdSchedulerFactory();IScheduler scheduler = await factory.GetScheduler();// 創建作業IJobDetail job = JobBuilder.Create<ReportJob>().WithIdentity(jobName, groupName).Build();// 創建觸發器,ITrigger trigger = TriggerBuilder.Create().WithIdentity(triggerName, groupName).StartNow().WithCronSchedule("0 0 22 ? * * ")//每天晚上十點.Build();//.WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever()//每10s執行一次// 加入到作業調度池中await scheduler.ScheduleJob(job, trigger);// 開始運行await scheduler.Start();}catch (Exception ex){//日志}}}
}
最后在程序啟動的時候進行注冊:
protected void Application_Start(){log4net.Config.XmlConfigurator.Configure();//系統日志配置QuartzTask.ReportJobScheduler.Start();//AreaRegistration.RegisterAllAreas();GlobalConfiguration.Configure(WebApiConfig.Register);FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);BundleConfig.RegisterBundles(BundleTable.Bundles);}
以上就是簡單的代碼使用 。Quartz.net的使用可以通過兩種方式調用:一是通過代碼的方式,而是通過配置文件的方式;
詳細些的可以參考:Quartz.Net詳解-CSDN博客