最近在 ASP.NET 开发中需要做一个定时任务,虽然.NET Framework 有自带的 timer,但是感觉如果做一些复杂的定时任务,相对来说就比较复杂
于是在网上发现了一款简单、轻量、功能强大的组件 FluentScheduler。话不多说,开搞
一、安装
通过 Nuget 程序包管理,用命令安装。不知道怎么打开的参照下图
![]()
Nuget 命令
Install-Package FluentScheduler
二、实例
使用方法很简单,可以去参考官方文档
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());
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于