码迷,mamicode.com
首页 > 其他好文 > 详细

FluentScheduler实现定时任务

时间:2020-05-21 19:32:15      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:project   threading   Once   date   event   init   一个   lob   注册   

FluentScheduler是一个简单的任务调度框架,使用起来非常方便。作者的源码和例子的地址:

https://github.com/fluentscheduler/FluentScheduler

1.首先引用FluentScheduler.dll,dll数据源可通过NuGet程序包获取。打开管理解决方案的NuGet程序包,输入FluentScheduler即可。

步骤:状态栏选择 工具 - NuGet程序包管理器 – 管理解决方案的NuGet程序包,然后输入FluentScheduler即可。

技术图片

 2.新建Registry继承类

技术图片
using System;
using FluentScheduler;
using System.Threading;

namespace DemoProject2020
{
    public class TimingRoutine:Registry
    {
        public  TimingRoutine()
        {
            Welcome();
        }
        private void Welcome()
        {
            // 每2秒一次循环
            Schedule<TaskJob>().ToRunNow().AndEvery(2).Seconds();

            // 5秒后,只一次
            Schedule<TaskJob>().ToRunOnceIn(5).Seconds();

            //每天晚上21:15分执行
            Schedule(() => Console.WriteLine("Timed Task - Will run every day at 9:15pm: " + DateTime.Now)).ToRunEvery(1).Days().At(21, 15);

            // 每个月的执行
            Schedule(() =>
            {
                Console.WriteLine("Complex Action Task Starts: " + DateTime.Now);
                Thread.Sleep(1000);
                Console.WriteLine("Complex Action Task Ends: " + DateTime.Now);
            }).ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);

            //先执行第一个Job、再执行第二个Job;完成后等5秒继续循环
            Schedule<TaskJob>().AndThen<TaskJob>().ToRunNow().AndEvery(5).Seconds();
            //直接运行
            Schedule(() => Console.Write("3, "))
                .WithName("[welcome]")
                .AndThen(() => Console.Write("2, "))
                .AndThen(() => Console.Write("1, "))
                .AndThen(() => Console.WriteLine("Live!"));
        }
    }
    
}
View Code

3.新建调用任务类继承IJob

技术图片
using System;
using System.IO;
using FluentScheduler;

namespace DemoProject2020
{
    public class TaskJob:IJob
    {
        void IJob.Execute()
        {
            var str = "循环每2秒执行一次;现在时间是:" + DateTime.Now.ToString();
            System.IO.StreamWriter writer = null;
            try
            {
                //写入日志 
                string path= Server.MapPath("~/logs"); ;
                //不存在则创建错误日志文件夹
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                path += string.Format(@"\{0}.txt", DateTime.Now.ToString("yyyy-MM-dd"));
                writer = !System.IO.File.Exists(path) ? System.IO.File.CreateText(path) : System.IO.File.AppendText(path); //判断文件是否存在,如果不存在则创建,存在则添加
                writer.WriteLine(str);
                writer.WriteLine("********************************************************************************************");
            }
            finally
            {
                if (writer != null)
                {
                    writer.Close();
                }
            }
        }
    }

}
View Code

 4.新建Global.asax,全局应用程序处理类

技术图片

 Global.asax添加注册定时程序

 protected void Application_Start(object sender, EventArgs e)
        {
            //注册定时任务
             JobManager.Initialize(new TimingRoutine());             
        }

 

FluentScheduler实现定时任务

标签:project   threading   Once   date   event   init   一个   lob   注册   

原文地址:https://www.cnblogs.com/TechSingularity/p/12890773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!