LinkDotNet.NCronJob
0.9.3
The repository and package moved to a new organization and name. Use NCronJob instead!
Read more about this in our announcement: https://github.com/NCronJob-Dev/NCronJob/discussions/66
See the version list below for details.
dotnet add package LinkDotNet.NCronJob --version 0.9.3
NuGet\Install-Package LinkDotNet.NCronJob -Version 0.9.3
<PackageReference Include="LinkDotNet.NCronJob" Version="0.9.3" />
paket add LinkDotNet.NCronJob --version 0.9.3
#r "nuget: LinkDotNet.NCronJob, 0.9.3"
// Install LinkDotNet.NCronJob as a Cake Addin #addin nuget:?package=LinkDotNet.NCronJob&version=0.9.3 // Install LinkDotNet.NCronJob as a Cake Tool #tool nuget:?package=LinkDotNet.NCronJob&version=0.9.3
<h1 align="center">NCronJob</h1>
<p align="center"> <img src="assets/logo_small.png" alt="logo" width="120px" height="120px"/> <br> <em>Scheduling made easy</em> <br> </p>
NCronJob
A Job Scheduler sitting on top of IHostedService
in dotnet.
Often times one finds themself between the simplicisty of the BackgroundService
/IHostedService
and the complexity of a full blown Hangfire
or Quartz
scheduler.
This library aims to fill that gap by providing a simple and easy to use job scheduler that can be used in any dotnet application and feels "native".
So no need for setting up a database, just schedule your stuff right away! The library gives you two ways of scheduling jobs:
- Instant jobs - just run a job right away
- Cron jobs - schedule a job using a cron expression
Features
- The ability to schedule jobs using a cron expression
- The ability to instantly run a job
- Parameterized jobs - instant as well as cron jobs!
- Integrated in ASP.NET - Access your DI container like you would in any other service
- Get notified when a job is done (either successfully or with an error) - currently in development
Not features
As this is a simple scheduler, some features are not included by design. If you need these features, you might want to look into a more advanced scheduler like Hangfire
or Quartz
.
- Job persistence - Jobs are not persisted between restarts of the application.
- Job history - There is no history of jobs that have been run.
- Retries - If a job fails, it is not retried.
- Progress state - There is no way to track the progress of a job. The library will support notifying when a job is done, but not the progress of the job itself.
Short example
- Import the namespace (or let your IDE do the dirty work)
using LinkDotNet.NCronJob;
- Create a job
public class PrintHelloWorld : IJob
{
private readonly ILogger<PrintHelloWorld> logger;
public PrintHelloWorld(ILogger<PrintHelloWorld> logger)
{
this.logger = logger;
}
public Task Run(JobExecutionContext context, CancellationToken token = default)
{
logger.LogInformation("Hello World");
logger.LogInformation("Parameter: {Parameter}", context.Parameter);
return Task.CompletedTask;
}
}
- Register the job in your
Program.cs
builder.Services.AddCronJob<PrintHelloWorld>(options =>
{
// Every minute
options.CronExpression = "* * * * * *";
// Optional parameter
options.Parameter = "Hello World";
});
- Run your application and see the magic happen
Triggering an instant job
If the need arises and you want to trigger a job instantly, you can do so:
public class MyService
{
private readonly IInstantJobRegistry jobRegistry;
public MyService(IInstantJobRegistry jobRegistry) => this.jobRegistry = jobRegistry;
public void MyMethod() => jobRegistry.AddInstantJob<MyJob>("I am an optional parameter");
}
Retrieving scoped services
Every job is registered as singleton inside the container, so be careful if you have state and furthermore be careful when retrieving scoped services. To come around this "limitation", you can simply create your own scope inside the job:
public class JobWithScope : IJob
{
private readonly IServiceProvider services;
public JobWithScope(IServiceProvider services) => this.services = services;
public async Task Run(JobExecutionContext context, CancellationToken token = default)
{
using var scope = services.CreateScope();
var myScopedService = scope.ServiceProvider.GetRequiredService<MyScopedService>();
await myScopedService.DoSomething();
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net8.0
- Microsoft.Extensions.Hosting (>= 8.0.0)
- NCrontab.Signed (>= 3.3.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 | |
---|---|---|---|
2.4.6 | 550 | 5/21/2024 | |
2.4.5 | 339 | 5/20/2024 | |
2.4.4 | 118 | 5/20/2024 | |
2.4.3-preview | 104 | 5/20/2024 | |
2.4.1-preview | 101 | 5/18/2024 | |
2.4.0-preview | 116 | 5/8/2024 | |
2.3.2 | 244 | 5/8/2024 | |
2.3.1 | 133 | 5/7/2024 | |
2.3.0-preview | 124 | 5/7/2024 | |
2.2.1 | 143 | 5/5/2024 | |
2.2.0-preview | 130 | 5/4/2024 | |
2.1.4 | 154 | 5/1/2024 | |
2.1.3-preview | 114 | 4/30/2024 | |
2.1.2-preview | 113 | 4/28/2024 | |
2.1.1-preview | 111 | 4/27/2024 | |
2.1.0-preview | 113 | 4/25/2024 | |
2.0.5 | 305 | 4/19/2024 | |
2.0.4 | 157 | 4/16/2024 | |
2.0.3 | 140 | 4/15/2024 | |
2.0.2-preview | 111 | 4/15/2024 | |
2.0.1-preview | 115 | 4/15/2024 | |
2.0.0-preview | 140 | 4/14/2024 | |
1.0.2 | 251 | 4/11/2024 | |
1.0.1-preview | 124 | 4/10/2024 | |
1.0.0-preview | 105 | 4/10/2024 | |
0.13.2 | 159 | 3/29/2024 | |
0.13.1 | 198 | 3/25/2024 | |
0.13.0 | 255 | 3/23/2024 | |
0.12.0 | 164 | 3/22/2024 | |
0.11.5 | 143 | 3/22/2024 | |
0.11.4 | 140 | 3/21/2024 | |
0.11.3 | 127 | 3/21/2024 | |
0.11.2-preview | 109 | 3/21/2024 | |
0.11.1-preview | 106 | 3/21/2024 | |
0.11.0-preview | 118 | 3/21/2024 | |
0.10.1 | 151 | 3/19/2024 | |
0.10.0 | 153 | 3/18/2024 | |
0.9.3 | 134 | 3/18/2024 | |
0.9.2 | 141 | 3/17/2024 | |
0.9.1 | 141 | 3/17/2024 |
Changes in NCronJob #{RELEASE_VERSION}#
#{RELEASE_NOTES}#
See the full changelog at https://github.com/linkdotnet/NCronJob/releases