Sgbj.Cron.CronTimer 1.0.2

dotnet add package Sgbj.Cron.CronTimer --version 1.0.2
NuGet\Install-Package Sgbj.Cron.CronTimer -Version 1.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Sgbj.Cron.CronTimer" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sgbj.Cron.CronTimer --version 1.0.2
#r "nuget: Sgbj.Cron.CronTimer, 1.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Sgbj.Cron.CronTimer as a Cake Addin
#addin nuget:?package=Sgbj.Cron.CronTimer&version=1.0.2

// Install Sgbj.Cron.CronTimer as a Cake Tool
#tool nuget:?package=Sgbj.Cron.CronTimer&version=1.0.2

Sgbj.Cron.CronTimer

Provides a cron timer similar to System.Threading.PeriodicTimer that enables waiting asynchronously for timer ticks.

Available on NuGet.

Usage

Normal usage:

// Every minute
using var timer = new CronTimer("* * * * *");

while (await timer.WaitForNextTickAsync())
{
    // Do work
}

Example hosted service:

public class CronJob : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        // Every day at 8am local time
        using var timer = new CronTimer("0 8 * * *", TimeZoneInfo.Local);

        while (await timer.WaitForNextTickAsync(stoppingToken))
        {
            // Do work
        }
    }
}

Non-standard cron expression:

// Every 30 seconds
using var timer = new CronTimer(CronExpression.Parse("*/30 * * * * *", CronFormat.IncludeSeconds));

Resources

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Sgbj.Cron.CronTimer:

Package Downloads
E.S.BackgroundService

E.S.BackgroundService

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Sgbj.Cron.CronTimer:

Repository Stars
aptabase/aptabase
✨ Open Source, Privacy-First and Simple Analytics for Mobile, Desktop and Web Apps
Version Downloads Last updated
1.0.2 82,793 3/25/2023
1.0.1 23,322 1/5/2023
1.0.0 89,072 1/16/2022