Solo  当前访客:1 开始使用

Y 的个人博客

Java/C#/Linux

C#/ASP.NET定时调度任务组件FluentScheduler 有更新!

2018-10-22 11:30:15 yang17762622
0  评论    753  浏览

    最近在ASP.NET开发中需要做一个定时任务,虽然.NET Framework有自带的timer,但是感觉如果做一些复杂的定时任务,相对来说就比较复杂
    于是在网上发现了一款简单、轻量、功能强大的组件FluentScheduler。话不多说,开搞

    一、安装

    通过Nuget程序包管理,用命令安装。不知道怎么打开的参照下图

    1png

    Nuget命令

    Install-Package FluentScheduler
    

    2png

    二、实例

    使用方法很简单,可以去参考官方文档

    using FluentScheduler;
    public class MyRegistry : Registry
    { 
    public MyRegistry()
    {
    // Schedule an ITask to run at an interval
    Schedule().ToRunNow().AndEvery(2).Seconds(); 
    // Schedule an ITask to run once, delayed by a specific time interval. 
    Schedule().ToRunOnceIn(5).Seconds(); 
    // Schedule a simple task to run at a specific time
    Schedule(() => Console.WriteLine("Timed Task - Will run every day at 9:15pm: " + DateTime.Now)).ToRunEvery(1).Days().At(21, 15);
    // Schedule a more complex action to run immediately and on an monthly interval
    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 multiple tasks to be run in a single schedule
    Schedule().AndThen().ToRunNow().AndEvery(5).Minutes();
    }
    }
    

    我使用的方法分享一下
    1.项目启动会执行一次,指定时间到了以后会再执行一次

    //每月第一周的星期一凌晨3点运行
    Schedule(() => { }).ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);
    

    2.指定时间到了以后执行

    //每月一号3点运行
    Schedule(() => { }).ToRunEvery(1).Months().On(1).At(3, 0);
    

    三、初始化

    ASP.NET程序的在Global.asax文件中的Application_Start()方法中初始化

    JobManager.Initialize(new MyRegistry());
    

    发表评论

    TOP