1. 程式人生 > >ASP.NET MVC 使用QuertZ元件來搞專案定時計劃(再也不用windowsService了!!)

ASP.NET MVC 使用QuertZ元件來搞專案定時計劃(再也不用windowsService了!!)

前言:拋棄windows計劃,擁抱.NET元件.
每個人都喜歡監聽和外掛。今天,幾乎下載任何開源框架,你必定會發現支援這兩個概念。監聽是你建立的C#類,當關鍵事件發生時會收到框架的回撥。例如,當一個作業被排程、沒有排程或觸發器終止和不再觸發時,這些都可以通過設定來通知你的監聽器。Quartz框架包含了排程器監聽、作業和觸發器監聽。你可以配置作業和觸發器監聽為全域性監聽或者是特定於作業和觸發器的監聽。

首先通過NuGet安裝Quartz.NET。

如何使用?

1、實現IJob介面,定義具體要做的事情(作業)
2、使用Quartz.NET的API定義定時任務規則(規則)
3、在Application_Start註冊定時任務(配置)

1.建立作業

作業繼承IJob

 public class JobDemo : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            System.IO.File.AppendAllText("C:/projectLog.log", "hello quartZ");
        }
    }

需要注意的是,我nuget下載的是比較老的版本,近幾年的元件中該介面需要實現的方法的返回值是一個Task型別。

2.規則定義

 public class ReportJobScheduler
    {
        public static void Start()
        {
            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
            scheduler.Start();
            IJobDetail job = JobBuilder.Create<JobDemo>().Build();//建立job示例
            ITrigger trigger = TriggerBuilder.Create()
              .WithIdentity("triggerName", "groupName")
              .WithSimpleSchedule(t =>
                t.WithIntervalInSeconds(5)//5秒迴圈
                 .RepeatForever())
                 .Build();

            scheduler.ScheduleJob(job, trigger);
        }
    }

 3.配置

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //啟用定時任務
            ReportJobScheduler.Start();
        }
    }

  這樣就可以使用了!