在编写自动执行的程序时,传统的方法是将其打包成可执行文件(exe),然后使用windows任务计划程序(task scheduler)来设置执行时间和频率。然而,对于秒级别的高频任务,传统方法显得力不从心,通常需要将程序打包成服务并安装在服务器上运行。

最近,我在网上偶然发现了FluentScheduler这个神器。它可以通过Nuget轻松安装,并且使用起来非常方便,堪称任务调度的神器!
FluentScheduler主要包括以下几个对象:IJob(工作)、Registry(注册)和Schedule(计划)。下面我将展示一个简单的实例。
首先,我们定义一个工作类:
using FluentScheduler;///
/// 工作类 /// public class MyJob : IJob { public void Execute() { // 编写需要工作的内容 // 比如输出一句话 Console.WriteLine("执行工作!"); } }
接下来,我们创建一个注册表类,用于安排任务的执行:
using FluentScheduler;///
/// 注册表 /// public class MyRegistry : Registry { // 无参构造函数 public MyRegistry() { // 安排任务在某个时间间隔内运行 Schedule().ToRunNow().AndEvery(2).Seconds(); // 安排任务在特定时间间隔后运行一次 Schedule().ToRunOnceIn(5).Seconds(); // 安排一个简单的任务在特定时间运行 Schedule(() => Console.WriteLine("定时任务 - 将在每天晚上9:15运行: " + DateTime.Now)).ToRunEvery(1).Days().At(21, 15); // 安排一个更复杂的任务,立即运行并按月执行 Schedule(() => { Console.WriteLine("复杂任务开始: " + DateTime.Now); Thread.Sleep(1000); Console.WriteLine("复杂任务结束: " + DateTime.Now); }).ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0); // 安排多个任务在一个单一的日程安排中运行 Schedule ().AndThen ().ToRunNow().AndEvery(5).Minutes(); } }
在ASP.NET程序中,我们需要在Global.asax文件中初始化任务管理器以启动定时器:
protected void Application_Start() { JobManager.Initialize(new MyRegistry()); }另外,还有一种方法可以执行多个任务在不同时间段:
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)); // 每个月的最后一天早上8:30执行 JobManager.Start(); // 启动任务管理器 }通过以上方法,我们可以灵活地安排各种任务的执行时间和频率,极大地方便了任务调度的工作。










