最近在 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());
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于