Reference: https://www.cnblogs.com/personblog/p/11277527.html ,
https://www.jianshu.com/p/b8e7e4deb60a
.NET MVC in Example:
ReportJob.cs
using Quartz; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespace Quartz研究.MyJob.GetWxQdSubMchId { [DisallowConcurrentExecution] public class ReportJob : IJob { public Task Execute(IJobExecutionContext context) { return Task.Run(() => { foo(); }); } public void foo() { try { var reportDirectory = string.Format("~/reports/{0}/", DateTime.Now.ToString("yyyy-MM")); reportDirectory = System.Web.Hosting.HostingEnvironment.MapPath(reportDirectory); if (!Directory.Exists(reportDirectory)) { Directory.CreateDirectory(reportDirectory); } var dailyReportFullPath = string.Format("{0}report_{1}.log", reportDirectory, DateTime.Now.Day); var logContent = string.Format("{0}==>>{1}{2}", DateTime.Now, "create new log.", Environment.NewLine); File.AppendAllText(dailyReportFullPath, logContent); } catch (Exception ex) { //日志 } } } }
--
ReportJobScheduler.cs
using Quartz; using Quartz.Impl; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Quartz研究.MyJob.GetWxQdSubMchId { public class ReportJobScheduler { /// <summary> /// 创建计划任务 /// </summary> 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 (); //Create a trigger performed once every 10s ITrigger Trigger = TriggerBuilder.Create () .WithIdentity (triggerName, groupName) .StartNow () .WithSimpleSchedule (X => X .WithIntervalInSeconds ( 10 ) .RepeatForever ()) .build (); / / is added to the job scheduler pool the await scheduler.ScheduleJob (job, Trigger); // start running the await scheduler.Start (); } the catch (Exception EX) { // }Log } } }
--
Application_Start()
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; namespace Quartz研究 { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { Quartz研究.MyJob.GetWxQdSubMchId.ReportJobScheduler.Start(); AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } } }
--