當前位置: 妍妍網 > 碼農

.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

    推薦閱讀

  • 歡迎掃描下方二維碼加我的 微信 ,獲取更多技術解決方案並入群交流

    版權聲明:本文來源於網路素材收集整理或網友供稿,版權歸版權所有者所有,如有侵權請聯系小編予以刪除