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

最近,我在网上偶然发现了FluentScheduler这个神器。它可以通过Nuget轻松安装,并且使用起来非常方便,堪称任务调度的神器!
FluentScheduler主要包括以下几个对象:IJob(工作)、Registry(注册)和Schedule(计划)。下面我将展示一个简单的实例。
首先,我们定义一个工作类:
using FluentScheduler;
<p>/// <summary>
/// 工作类
/// </summary>
public class MyJob : IJob
{
public void Execute()
{
// 编写需要工作的内容
// 比如输出一句话
Console.WriteLine("执行工作!");
}
}接下来,我们创建一个注册表类,用于安排任务的执行:
using FluentScheduler;</p><p>/// <summary>
/// 注册表
/// </summary>
public class MyRegistry : Registry
{
// 无参构造函数
public MyRegistry()
{
// 安排任务在某个时间间隔内运行
Schedule<MyJob>().ToRunNow().AndEvery(2).Seconds();</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;"> // 安排任务在特定时间间隔后运行一次
Schedule<MyJob>().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<MyJob>().AndThen<MyOtherJob>().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(); // 启动任务管理器
}通过以上方法,我们可以灵活地安排各种任务的执行时间和频率,极大地方便了任务调度的工作。
以上就是C# 任务调度神器 FluentScheduler的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号