.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

posted @ 2024-02-27 15:47  .Neterr  阅读(133)  评论(0编辑  收藏  举报