Getting Started

Using NCronJob is simple and easy. Just follow the steps below to get started.

1. Install the package

NuGet

Install the latest stable version of the package via NuGet:

dotnet add package NCronJob

Alternatively add the package reference to your .csproj file:

<PackageReference Include="NCronJob" Version="3.3.8" />

2. Create a job

NCronJob offers a single way of defining jobs: by implementing the IJob interface with a single RunAsync method:

public class PrintHelloWorld : IJob
{
    private readonly ILogger<PrintHelloWorld> logger;

    public PrintHelloWorld(ILogger<PrintHelloWorld> logger)
    {
        this.logger = logger;
    }

    public Task RunAsync(IJobExecutionContext context, CancellationToken token)
    {
        logger.LogInformation("Hello World");
        logger.LogInformation("Parameter: {Parameter}", context.Parameter);

        return Task.CompletedTask;
    }
}

3. Register the service and the job

The NCronJob library provides one easy entry point for all its magic, the AddNCronJob extension method on top of the IServiceCollection interface.

Services.AddNCronJob(options => 
{
    options.AddJob<PrintHelloWorld>(j => 
    {
        // Every minute and optional parameter
        j.WithCronExpression("* * * * *")
         .WithParameter("Hello World");
    }));
});

Now your PrintHelloWorld job will run every minute and log “Hello World” to the console. And that is all!

Too complicated?

We also over a “Minimal API” that allows you to define jobs similiar to the Minimal API for Controllers.

builder.Services.AddNCronJob((ILogger<Program> logger, TimeProvider timeProvider) =>
{
    logger.LogInformation("Hello World - The current date and time is {Time}", timeProvider.GetLocalNow());
}, "*/5 * * * * *");

The job will be defined “inline” and is capable of resolving services from the DI container.

You can read more about this in the section Minimal API.