Quartz.Net與MVC結合定時任務


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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM