For how long does quartz run in the background when hosted on iis asp net


When hosting a Quartz job scheduler on IIS with ASP.NET, it is important to understand how long the Quartz scheduler runs in the background. This article aims to provide an explanation and examples to help solve this question.

Understanding Quartz Scheduler

Quartz is a powerful job scheduling library that can be used in ASP.NET applications to execute tasks at specific times or intervals. It provides a flexible and reliable way to background .

Quartz Scheduler

The Quartz scheduler has a lifecycle that determines how long it runs in the background. The lifecycle consists of several phases:

  1. Initialization: In this phase, the scheduler is and configured with jobs and triggers.
  2. : Once the scheduler is initialized, it can be started to begin executing the scheduled jobs.
  3. Execution: During this phase, the scheduler continuously checks for jobs that are ready to be executed and triggers them accordingly.
  4. Shutdown: When the scheduler is no longer needed, it can be shut down to stop the execution of jobs.

Configuring Quartz Scheduler in ASP.NET

To configure and use Quartz scheduler in an ASP.NET application, you need to add the necessary NuGet and configure the scheduler in the application startup code. Here's an example:

using Quartz;
using Quartz.Impl;

public class Startup
    public void ConfigureServices(IServiceCollection services)
        // Add Quartz services

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
        // Get the scheduler instance
        var schedulerFactory = serviceProvider.GetService();
        var scheduler = schedulerFactory.GetScheduler().;

        // Start the scheduler

        // Schedule jobs and triggers
        // ...

        // Shutdown the scheduler when the application is stopped
        appLifetime.ApplicationStopping.Register(() =>

Example: Running Quartz Scheduler in the Background

Let's consider an example where we want to schedule a job to run every 5 minutes in the background. Here's how you can achieve this using Quartz in ASP.NET:

using Quartz;

public class MyJob : IJob
    public Task Execute(IJobExecutionContext context)
        // Perform the job tasks here
        // ...

        return Task.CompletedTask;

public class JobScheduler
    private readonly IScheduler _scheduler;

    public JobScheduler(IScheduler scheduler)
        _scheduler = scheduler;

    public  Task ScheduleJob()
        // Create a job detail
        var jobDetail = JobBuilder.Create()
            .WithIdentity("myJob", "myGroup")

        // Create a trigger that runs every 5 minutes
        var trigger = TriggerBuilder.Create()
            .WithIdentity("myTrigger", "myGroup")
            .WithSimpleSchedule(x => x

        // Schedule the job with the trigger
        await _scheduler.ScheduleJob(jobDetail, trigger);

In this example, we define a job class (MyJob) that implements the IJob interface. The Execute method of the job class the tasks that need to be performed. We also have a JobScheduler class that is responsible for scheduling the job.

The ScheduleJob method in the JobScheduler class creates a job detail and a trigger. The trigger is configured to run every 5 minutes using the WithIntervalInMinutes method. Finally, the job is scheduled with the trigger using the ScheduleJob method of the scheduler instance.


In conclusion, when hosting a Quartz job scheduler on IIS with ASP.NET, the scheduler runs in the background as long as it is started and not explicitly shut down. By understanding the lifecycle of the Quartz scheduler and properly configuring it in your ASP.NET application, you can ensure that your scheduled jobs run reliably and efficiently.

Rate this post

Leave a Reply

Your email address will not be published. Required fields are marked *

Table of Contents