1.通过程序包管理器控制台来安装Quartz.Net组件:Install-Package Quartz
2.新建一个类命名为 ReportJob: IJob
using Quartz;
using System.IO;
public void Execute(IJobExecutionContext context)
{
var reportDirectory = string.Format("~/ZIP/");
reportDirectory = System.Web.Hosting.HostingEnvironment.MapPath(reportDirectory);
//获取文件夹中所有文件
if (Directory.GetFileSystemEntries(reportDirectory).Length > 0)
{
//遍历文件夹中所有文件
foreach (string file in Directory.GetFiles(reportDirectory))
{
//文件己存在
if (File.Exists(file))
{
FileInfo fi = new FileInfo(file);
//判断当前文件属性是否是只读
if (fi.Attributes.ToString().IndexOf("ReadyOnly") >= 0)
{
fi.Attributes = FileAttributes.Normal;
}
//删除文件
File.Delete(file);
}
}
//删除文件夹
// Directory.Delete(reportDirectory);
}
// throw new NotImplementedException();
}
3.新建一个类命名为 ReportJobScheduler
using Quartz;
using Quartz.Impl;
public static void Start()
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<ReportJob>().Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("triggerName", "groupName")
.WithSimpleSchedule(t =>
t.WithIntervalInSeconds(5) //设置多少秒执行一次
.RepeatForever())
.Build();
scheduler.ScheduleJob(job, trigger);
}
4.在 Gloabl.asax 启动方法中添加启动任务
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//启动定时任务
ReportJobScheduler.Start();
}