ReCron is a fully-featured .NET library for creating and running Cron/Scheduled jobs using background service for .NET Core 3.1, .NET 5 and upwords.
.NET Version | Supported | Remark |
---|---|---|
.NET 6 | ✅ | |
.NET 5 | ✅ | |
.NET Core 3.1 | ✅ | |
.NET Core (1.0 - 3.0) | ❌ | This library is targeting .NET Core 3.1, .NET 5 ++ |
.NET Framework (1.0 - 4.8) | ❌ | This library is targeting .NET Core 3.1, .NET 5 ++ |
Package Manager
Install-Package ReCron -Version 0.2.1
.NET CLI
dotnet add package ReCron --version 0.2.1
Package Reference
<PackageReference Include="ReCron" Version="0.2.1" />
- Create a job class by inheriting
CronWorkerService
class and implementWorkerProcess
method.
class TestJob : CronWorkerService
{
public TestJob(IWorkerConfig<TestJob1> config, ILogger<TestJob1> logger) : base(config.CronExpression, TimeZoneInfo.Local)
{
}
protected override async Task WorkerProcess(CancellationToken stoppingToken)
{
await Task.Run(() => Console.WriteLine("TestJob\t" + DateTime.Now.ToString()));
}
}
- Inject your job with cron expression and
TimeZoneInfo
services.AddCronWorker<TestJob>(config =>
{
config.CronExpression = "*/1 * * * * *";
config.TimeZoneInfo = TimeZoneInfo.Local;
});
- To get currently injected Jobs with status:
ReCronContainer.GetWorkers();
- Worker/Job status is an enum
public enum WorkerStatus
{
Added = 0,
Running = 1,
Stopped = 2,
}
- To stop a job:
ReCronContainer.StopWorker(name);
// name is fully qualified name of job class
- To start a job:
ReCronContainer.StartWorker(name);
// name is fully qualified name of job class
For working examples see /demos
directory.
- Rasedur Rahman Roxy - Planning and Development - Twitter
This project is licensed under the MIT License - see the LICENSE.md file for details
- Hat tip to anyone whose code was used