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/
