前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# 任务调度神器 FluentScheduler

C# 任务调度神器 FluentScheduler

作者头像
Tony老师
发布2020-03-04 13:40:38
3.7K0
发布2020-03-04 13:40:38
举报
文章被收录于专栏:托老师托老师

最近几天在写一些自动执行的程序,按照古老的做法就是做成exe可执行文件,并且在任务执行完自动退出。然后用Windows的Task Scheduler按照要求设置执行时间和执行频率,可以做到近乎所有能想到的执行Job。

但是有一些很频繁的任务,秒级别的,这个就实现不了了,传统的做法是只能打包成服务,安装到服务器上执行。 今天在网上突然发现了这个神器,FluentSchedule,直接在Nuget里搜索安装,调用特别方便,简直是任务调度的神器!

FluentScheduler 中 对象: IJob(工作)、Registry(注册)、Schedule(计划)

首先做一个简单的实例

代码语言:javascript
复制
using FluentScheduler;
/// <summary>
///  工作类
/// </summary>
public class MyJob : IJob
{
    public void Execute()
    {
         //编写需要工作的内容
         //比如输出一句话
         Console.WriteLine("执行工作!");
    }
}
using FluentScheduler; 
/// <summary>
///  注册表
/// </summary>
public class MyRegistry : Registry
{   
    //无参构造函数
    public MyRegistry()
    {
        //安排任务运行在一个区间
        Schedule<MyJob>().ToRunNow().AndEvery(2).Seconds(); 
        
        // 安排任务运行一次,由一个特定的时间间隔延迟。
        Schedule<MyJob>().ToRunOnceIn(5).Seconds(); 
        
        //安排一个简单的任务在一个特定的时间运行
        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); 
        
        //计划多个任务在一个单一的日程安排中运行
        Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery(5).Minutes();
    }
}

在ASP.NET程序的Global.asax文件中,首先初始化管理器,这样定时器就开启了。

代码语言:javascript
复制
protected void Application_Start()
 {
     JobManager.Initialize(new MyRegistry());
 }

以上是第一种写法,下面介绍第二种写法,这里执行多个任务 不同时间段

代码语言:javascript
复制
protected void Application_Start()
 {
     JobManager.AddJob(t=>t.ToRunEvery(1).Days().At(24,00));//每天的凌晨12点 执行 
     JobManager.AddJob(t => t.ToRunEvery(1).Months().OnTheLastDay().At(8,30));//每个月的最后一天早上八点半 执行
     JobManager.Start();//启动任务管理器
 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档