当前位置: 欣欣网 > 码农

.NET 全能 Cron 表达式解析库,支持 Cron 所有特性

2024-02-27码农

本文简介

本文将为你介绍一款在 .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

    推荐阅读

  • 欢迎扫描下方二维码加我的 微信 ,获取更多技术解决方案并入群交流

    版权声明:本文来源于网络素材收集整理或网友供稿,版权归版权所有者所有,如有侵权请联系小编予以删除