Luftborn.SimpleCronScheduler
1.0.0
dotnet add package Luftborn.SimpleCronScheduler --version 1.0.0
NuGet\Install-Package Luftborn.SimpleCronScheduler -Version 1.0.0
<PackageReference Include="Luftborn.SimpleCronScheduler" Version="1.0.0" />
paket add Luftborn.SimpleCronScheduler --version 1.0.0
#r "nuget: Luftborn.SimpleCronScheduler, 1.0.0"
// Install Luftborn.SimpleCronScheduler as a Cake Addin #addin nuget:?package=Luftborn.SimpleCronScheduler&version=1.0.0 // Install Luftborn.SimpleCronScheduler as a Cake Tool #tool nuget:?package=Luftborn.SimpleCronScheduler&version=1.0.0
SimpleCronScheduler
Disclaimer this package is inspired by This Article
Overview
This is a simple package for scheduling tasks in ASP.Net Core WebAPI / MVC projects
Usage
To use this package you will have to:
- 1. Create Cron Job: which is a class that implements "CronJobService" abstract class
- 2. Add This Cron Job as a service (in project startup)
1. Create Cron Job
First add below using statements
using Luftborn.ASPCore.SimpleCronScheduler;
using Luftborn.ASPCore.SimpleCronScheduler.ScheduleConfig;
Below is a sample implementation:
public class MyCronJob1 : CronJobService
{
public MyCronJob1(IScheduleConfig<MyCronJob1> config) : base(config.CronExpression, config.TimeZoneInfo)
{ }
public override Task StartAsync(CancellationToken cancellationToken)
{
Log.Information("CronJob 1 starts.");
return base.StartAsync(cancellationToken);
}
public override Task DoWork(CancellationToken cancellationToken)
{
Log.Information($"{DateTime.Now:hh:mm:ss} CronJob 1 is working.");
// this is where the logic is put
return Task.CompletedTask;
}
public override Task StopAsync(CancellationToken cancellationToken)
{
Log.Information("CronJob 1 is stopping.");
return base.StopAsync(cancellationToken);
}
}
The key point here is to put the business logic into the DoWork method. P.S. Serilog is used for logging in this example, but any other logger would do.
1. Add Cron Job as a service
In the project "startup.cs"
add below using statement
using Luftborn.ASPCore.SimpleCronScheduler.Extensions;
In the "ConfigureServices" method add logic like the below where "CronExpression" here represents that the service would run each 5 minutes.
services.AddCronJob<MyCronJob1>(c =>
{
c.TimeZoneInfo = TimeZoneInfo.Local;
c.CronExpression = @"*/5 * * * *";
});
This uses Cronos as a cron expression parser, so please check their page, if you wou'd like to know more about CronExpression format or TimeZoneInfo
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Cronos (>= 0.7.0)
- Microsoft.Extensions.Hosting (>= 3.1.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 637 | 5/12/2020 |