ASP.NET MVC 启动定时任务删除某一文件夹下面的全部文件

来源:互联网 发布:爱知科技车间照片 编辑:程序博客网 时间:2024/04/30 03:23
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();
        }
0 0
原创粉丝点击