1.首先,我們打開Visual Studio 2015,創建一個ASP.NET MVC的Web應用程序項目。
2.然后通過程序包管理器控制台來安裝Quartz.Net組件。
Quartz.Net一個最簡單任務至少包括三部分實現:job(作業),trigger(觸發器)以及scheduler(調度器)。
其中job 是你需要在一個定時任務中具體執行的業務邏輯,trigger則規定job何時並按照何種規則執行,最終job和trigger會被注冊到 scheduler(調度器)中,scheduler負責協調job和trigger的運行。
3.創建Job類
public class ReportJob : IJob { public void Execute(IJobExecutionContext context)//必須實現IJob接口下的Execute方法 { 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); } }
4.創建觸發器trigge
public class ReportJobScheduler { public static void Start() { IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); //從工廠中獲取一個調度器實例化 scheduler.Start(); //開始調度器 IJobDetail job = JobBuilder.Create<ReportJob>().Build();//創建一個作業 ITrigger trigger = TriggerBuilder.Create() .WithSimpleSchedule(t => t.WithIntervalInSeconds(5) //觸發執行,5s一次 .RepeatForever()) //重復執行 .Build(); scheduler.ScheduleJob(job,trigger); //把作業,觸發器加入調度器。 } }
5.把這個任務放到項目程序的全局cs文件(Global.asax)的Application_Start方法中來執行.
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); //在這里調用 ReportJobScheduler.Start(); }
6.之后啟動網站,便會發現網站的根目錄下有定時任務產生的文件和文件夾
7.這只是個簡單的例子,參照http://www.cnblogs.com/bobositlife/p/aspnet-mvc-csharp-quartz-net-timer-task-scheduler.html,這篇博客做的實驗。
本實驗源代碼:https://git.oschina.net/sdadx/Quartz.Net/tree/master/