.NET 全能 Cron 表达式解析库,支持 Cron 所有特性【转】
本文简介
本文将为你介绍一款在 .NET 环境下功能全面的 Cron 表达式解析库——TimeCrontab。这个库不仅支持 Cron 的所有特性,还提供了易于使用的 API,帮助开发者轻松构建和管理定时任务。无论你是开发 Web 应用、后台服务还是桌面程序,TimeCrontab 都能满足你的需求,让你的定时任务更加高效和可靠。
在软件开发中,定时任务扮演着非常重要的角色。它们可以在特定的时间或周期性地执行一些操作,如发送邮件、清理缓存、更新数据等。而在 .NET 环境中,Cron 表达式是一种非常流行的定时任务配置方式。Cron 表达式具有简单易懂、功能强大的特点,可以帮助开发者快速地配置和管理定时任务。
然而,要在 .NET 环境下实现 Cron 表达式的解析和执行,往往需要花费一定的时间和精力。幸运的是,现在有一款名为 TimeCrontab 的全能 Cron 表达式解析库,可以大大简化这一过程。
TimeCrontab 是一款开源的 .NET 库,它提供了对 Cron 表达式的全面支持,包括分钟、小时、日期、月份和星期等各个字段的解析和执行。同时,TimeCrontab 还提供了一些额外的功能,如表达式的验证、表达式的格式化以及表达式的转换等。
使用 TimeCrontab,你可以轻松地构建和管理定时任务。首先,你需要安装 TimeCrontab 库到你的项目中。然后,你可以使用库提供的 API 来创建和管理 Cron 表达式。这些 API 简单易用,即使是没有接触过 Cron 表达式的开发者也能快速上手。
除了易于使用外,TimeCrontab 还具有高度的灵活性和可扩展性。你可以根据自己的需求定制定时任务的执行策略,如并发执行、串行执行等。同时,TimeCrontab 还支持与其他 .NET 框架和库的集成,如 ASP.NET、Quartz.NET 等,使你的定时任务更加高效和可靠。
特性
-
• 支持 Cron 所有特性
-
• 超高性能
-
• 易拓展
-
• 很小,仅 4KB
-
• 无第三方依赖
-
• 跨平台
-
• 高质量代码和良好单元测试
-
• 支持 .NET Framework 3.5+ 及后续版本
安装
Install-Package TimeCrontab
dotnet add package TimeCrontab
快速入门
我们在主页上有不少例子,这是让您入门的第一个:
常规格式:分 时 天 月 周
var crontab = Crontab.Parse("* * * * *");
var nextOccurrence = crontab.GetNextOccurrence(DateTime.Now);
支持年份:分 时 天 月 周 年
var crontab = Crontab.Parse("* * * * * *", CronStringFormat.WithYears);
var nextOccurrence = crontab.GetNextOccurrence(DateTime.Now);
支持秒数:秒 分 时 天 月 周
var crontab = Crontab.Parse("* * * * * *", CronStringFormat.WithSeconds);
var nextOccurrence = crontab.GetNextOccurrence(DateTime.Now);
支持秒和年:秒 分 时 天 月 周 年
var crontab = Crontab.Parse("* * * * * * *", CronStringFormat.WithSecondsAndYears);
var nextOccurrence = crontab.GetNextOccurrence(DateTime.Now);
获取休眠差实现简单定时任务
// 阻塞方式
var crontab = Crontab.Parse("* * * * * *", CronStringFormat.WithSeconds);
while(true)
{
Thread.Sleep(crontab.GetSleepMilliseconds(DateTime.Now));
Console.WriteLine(DateTime.Now.ToString("G"));
}
// 无阻塞方式
var crontab = Crontab.Parse("* * * * * *", CronStringFormat.WithSeconds);
Task.Factory.StartNew(async () =>
{
while (true)
{
await Task.Delay(crontab.GetSleepMilliseconds(DateTime.Now));
Console.WriteLine(DateTime.Now.ToString("G"));
}
}, TaskCreationOptions.LongRunning);
BackgroundService 实现简单定时任务
using TimeCrontab;
namespace WorkerService;
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private readonly Crontab _crontab;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
_crontab = Crontab.Parse("* * * * * *", CronStringFormat.WithSeconds);
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
var taskFactory = new TaskFactory(System.Threading.Tasks.TaskScheduler.Current);
await taskFactory.StartNew(async () =>
{
// 你的业务代码写到这里面
_logger.LogInformation("Worker running at: {time}", DateTime.Now);
await Task.CompletedTask;
}, stoppingToken);
await Task.Delay(_crontab.GetSleepMilliseconds(DateTime.Now), stoppingToken);
}
}
}
结语
总之,TimeCrontab 是一款功能全面、易于使用的 Cron 表达式解析库。它可以帮助你在 .NET 环境下快速构建和管理定时任务,提高你的开发效率和应用性能。如果你正在寻找一款优秀的 Cron 表达式解析库,那么 TimeCrontab 绝对是一个值得考虑的选择。
源码地址
https://gitee.com/dotnetchina/TimeCrontab