首页 > 其他分享 >.NET 全能 Cron 表达式解析库,支持 Cron 所有特性【转】

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

时间:2024-02-27 15:57:45浏览次数:21  
标签:TimeCrontab 全能 crontab Cron var NET 表达式

本文简介

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

标签:TimeCrontab,全能,crontab,Cron,var,NET,表达式
From: https://www.cnblogs.com/fanfan-90/p/18037014

相关文章

  • 使用cmd命令行(.NET Core CLI)来启动ASP.NET Core 应用程序的多个实例
    本章主要和大家分享下如何使用cmd命令行(.NETCoreCLI)来启动ASP.NETCore应用程序的多个实例,以此来模拟集群。.NETCore命令行接口(CLI)工具是用于开发、生成、运行和发布.NETCore应用程序的跨平台工具链。CLI命令结构包含驱动程序(“dotnet”)和命令,还可能包含命令参数......
  • Revisiting Heterophily For Graph Neural Networks
    目录概符号说明HomophilymetricsPost-aggregationnodesimilaritymatrix代码LuanS.,HuaC.,LuQ.,ZhuJ.,ZhaoM.,ZhangS.,ChangX.andPrecupD.Revisitingheterophilyforgraphneuralnetworks.NIPS,2022.概介绍了一种新的graphhomophilymetrics.符......
  • ASP.NET Core 过滤器返回自定义响应数据
    自定义返回类publicclassApiResponse{publicintCode{get;set;}publicstringMessage{get;set;}publicobjectData{get;set;}publicApiResponse(intcode,stringmessage,objectdata=null){Code=code;......
  • .NET GUI 相关页面跳转方案
    1.NavigationView是UWP,及现在winui流行的主窗口导航方式。创建一个NavigationView,在里面放置Frame作为右侧主要的展示窗口。在CodeBehind中实现NavView的ItemInvoked事件。根据参数InvokedItem(每一个Item的Content名称),或者每一Item的Tag来确定跳转。(还需处理重复跳转......
  • 13.分布式事件总线DotNetCore.CAP的简单使用
    DotNetCore.CAP框架提供了一个简单易用的API和多种消息传输协议支持(包括Redis、RabbitMQ等),可以让用户轻松地实现消息队列、事件发布/订阅、分布式事务等功能。它还具备自动重试、异常处理、数据序列化等高级特性,可以保证消息的可靠性和一致性。使用DotNetCore.CAP框架,你可以:1.......
  • crontab工具
    介绍:1、crontab是Linux和类Unix操作系统下的一个任务调度工具,用于周期性地执行指定的任务或命令。2、crontab存储在文件中,该文件位于/var/spool/cron/目录中。3、除了管理员,可以将命令添加到crontab中,通常用户需要执行周期性操作时使用。基本语法minutehourday-of-monthm......
  • 12.NET观察者模式,发布与订阅
    定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。——发布订阅模式发布订阅模式主要有两个角色:1.发布方(Publisher):也称为被观察者,当状态改变时负责通知所有订阅者。2.订阅方(Subscriber):也称为观察者,订阅事件并对接收到的......
  • Advanced .Net Debugging 2:CLR基础
    一、简介这是2024新年后我的第一篇文章,也是我的《Advanced.NetDebugging》这个系列的第二篇文章。这篇文章告诉我们为了进行有效的程序调试,我们需要掌握哪些知识。言归正传,无论采取什么形式来分析问题,对被调试系统的底层了解的越多,就越有可能成功的找出问题的根源。在N......
  • 开发框架DevExpress XAF - Entity Framework Core 8支持.NET 8性能基准
    DevExpressXAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。对于使用EntityFrameworkCore(EFCore)(实体核心框架)的用户来说,这是一个......
  • .net+bootstrap写的一个还不错的音乐网站
    以前做的一款设计音乐网站,分享下。技术用的是.net+sqlserver  大致的样子是这样的。1、首页如下: 2、播放歌词页面如下:歌词自动滚动,且可悬停。 3、歌单信息页面如下:详细页面如下:可删除歌单中歌曲信息。 编辑页面如下:可进行编辑封面和歌单名、简介等。 个人信息......