ASP.NET MVC项目使用的 FluentScheduler 后台任务定时器

ASP.NET MVC项目使用的 FluentScheduler 后台任务定时器

开发工具与关键技术:VS   MVC
撰写时间:2019/5/16

FluentScheduler 是什么?自动工作调度程序,界面流畅(Automated job scheduler with fluent interface.)是一个定时任务管理器。关于如何使用,我推荐去看作者的GitHub看源码或例子,地址:https://github.com/fluentscheduler/FluentScheduler 我也是刚好学习到这个定时任务管理器,然后我把老师介绍的例子学习了解下;要是想更详细了解的话,我更推荐你到作者的GitHub看看源码或例子会有更详细的说明。

在项目中使用FluentScheduler定时任务管理器需要在项目引用插件;如果是已有FluentScheduler定时任务管理器插件的话,先把插件拷贝到项目的bin文件夹(一般放.dll文件,属于配置文件),然后在项目的“引用”右键添加引用,找到FluentScheduler插件确定引用即可。引用成功之后可在“引用”哪里看插件名称,如下截图:
ASP.NET MVC项目使用的 FluentScheduler 后台任务定时器_第1张图片在项目中引用的插件
如果没有这个插件的话,可以在项目中安装FluentSchedule程序包。
打开程序包管理控制台,输入Install-Package FluentScheduler即可。步骤如下截图:

ASP.NET MVC项目使用的 FluentScheduler 后台任务定时器_第2张图片版本不一样,出现的结果可能不一样。
新建一个类,类可以直接用这个插件来名称;在类里面发布任务,即是待处理的作业工厂,在构造函数中设置好各个Job的执行计划。
新建一个私有类,这个类继承FluentScheduler插件里的Registry类;在这个类里写一个构造函数,构造函数是函数名称跟类名称(方法名称)保持一致的函数;在建一个私有类,这个类是指明要工作哪里、工作内容,这个类同样是继承FluentScheduler插件的IJob工作,类里面定义一个构造函数。
第一个类,是要执行什么工作,什么时候执行这个工作;第二个类,是执行的工作内容。

第一个类:

internal class  MyRegistry : Registry
{
	public MyRegistry() //构造函数:函数名跟类名保持一致的函数
  	{

            // 立即执行计划任务,并根据指定时间间隔执行一次计划任务
            //(指定一个时间间隔运行,根据自己需求,可以是秒、分、时、天、月、年等。)
            //Schedule().ToRunNow().AndEvery(10).Seconds();

            // 延迟一个指定时间间隔执行一次计划任务。
            //(当然,这个间隔依然可以是秒、分、时、天、月、年等。)
             //Schedule().ToRunOnceIn(10).Seconds();

            //在一个指定时间执行计划任务  每个小时的第10分钟执行    
            //Schedule().ToRunEvery(1).Hours().At(10);

           // 在一个指定时间执行计划任务(最常用。这里是在每天的下午 1:10 分执行)     
	   //Schedule().ToRunEvery(1).Days().At(13, 10);

            //每n年的第几天
            //Schedule().ToRunEvery(1).Years().On(5);

            //每n年的最后一天
            //Schedule().ToRunEvery(1).Years().OnTheLastDay();

            //每n月的第几天
           //Schedule().ToRunEvery(1).Months().On(1);

            //每n月的第一个星期的星期5 的15:0执行
           //Schedule().AndThen().ToRunEvery(1).Months().OnTheFirst(DayOfWeek.Friday).At(15,  0);

            //每n月的第一个星期的星期5 的15:0执行  CleanJob和TestJob
           //Schedule().AndThen().ToRunEvery(1).Months().OnTheFirst(DayOfWeek.Friday).At(15,0);

            //在每天3点清理数据        
            Schedule().ToRunNow().AndEvery(10).Days().At(3, 00);
         }
  }

第二个类:

   internal class  CleanJob : IJob      {
            void IJob.Execute() {
string str =AppDomain.CurrentDomain.BaseDirectory + "Document\\Temp\\";
//获取项目运行目录+Document\Temp来获取临时目录的绝对路径
            try {       
            	//判读是否存在Temp目录
                if (Directory.Exists(str))  {       
                   //存在Temp目录,就删除所有的子目录和子文件
		 //获取指定目录中的子目录的名称(包括其路径)。
                    string[] directories = Directory.GetDirectories(str);//文件夹中可能不止一个文件
                    foreach (string directory in directories)      {
                        //删除指定的目录并(如果指示)删除该目录中的所有子目录和文件。                
                       Directory.Delete(directory, true);
                    }
                    //返回指定目录中文件的名称(包括其路径)。
                    string[] files =Directory.GetFiles(str);
                    foreach (string file in files) 
                     { 
                       File.Delete(file); // 删除指定的文件。
                    }
                }
                Else    {
                   Directory.CreateDirectory(str); // 不存在,就创建Temp目录
                }
            }
            catch (Exception e) {
                Console.WriteLine(e);
            }
        }
}

定时任务写好了,要执行这个任务,在哪里请求执行呢?因为这个定时任务是一运行项目就要执行这个任务,所以把执行定时任务的方法写到整个项目的入口(Global.asax),其写法如下截图:
ASP.NET MVC项目使用的 FluentScheduler 后台任务定时器_第3张图片
定时任务执行与停止方法:

 public class  FluentScheduler    {

        // 启动定时任务

         //public static void StartUp()    
          {   
        //   JobManager.Initialize(new MyRegistry());    
        //}

        // 停止定时任务    
        //public static void Stop()    
         {  
        //    JobManager.Stop();
        //}

    }

你可能感兴趣的:(ASP.NET MVC项目使用的 FluentScheduler 后台任务定时器)