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/
时间: 2024-10-20 01:26:06