Quartz.NET für C# (.NET): Komplettguide mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Quartz.NET für C# (.NET): Das ultimative Handbuch zur Aufgabenplanung

Quartz.NET ist eine leistungsstarke, flexible und weit verbreitete Open-Source-Bibliothek zur Aufgabenplanung für .NET-Anwendungen. Sie ermöglicht Entwicklern, Hintergrundaufgaben zeitgesteuert zu erstellen, zu verwalten und auszuführen. Ob Sie Code zu einer bestimmten Uhrzeit, in regelmäßigen Abständen oder als Reaktion auf ein Ereignis ausführen möchten (wie Cron-Jobs unter Linux) – Quartz.NET ist die richtige Wahl. Die Bibliothek ist ein Port des beliebten Java-Frameworks Quartz Scheduler.

Warum braucht man das? In der modernen Entwicklung gibt es oft Aufgaben, die nicht synchron auf eine Benutzeranfrage hin ausgeführt werden sollen. Dazu gehören E-Mail-Newsletter, das Löschen temporärer Dateien, die Datensynchronisation mit externen APIs, die Berichterstellung, die Cache-Aktualisierung und vieles mehr. Quartz.NET bietet einen zuverlässigen und ausfallsicheren Mechanismus für solche Aufgaben. Es unterstützt die Speicherung von Job-Zuständen in einer Datenbank (JobStore), sodass die Anwendung Neustarts übersteht, und ermöglicht Clustering zur Lastverteilung.

Im Gegensatz zu einfachen System.Threading.Timer oder BackgroundService-Implementierungen bietet Quartz.NET eine umfangreiche API zur Verwaltung des Job-Lebenszyklus, komplexe Trigger (täglich, wöchentlich, per CRON-Ausdruck), parallele Ausführung, Ereignisüberwachung und vieles mehr. Das macht es zum De-facto-Standard für die Aufgabenplanung im .NET-Ökosystem.

Installation

Quartz.NET wird über NuGet verteilt. Verwenden Sie einen der folgenden Befehle in der Paket-Manager-Konsole:

# Installation des Hauptpakets
dotnet add package Quartz

# Falls Sie XML-Konfiguration benötigen
dotnet add package Quartz.Plugins

# Für die Nutzung mit Dependency Injection (empfohlen für ASP.NET Core)
dotnet add package Quartz.Extensions.Hosting

Für klassisches .NET Framework (z. B. .NET 4.8) verwenden Sie die NuGet-Konsole:

Install-Package Quartz

Schnellstart: Minimales funktionsfähiges Beispiel

Erstellen wir eine einfache Konsolenanwendung, die alle 5 Sekunden "Hallo, Quartz!" ausgibt.

using System;
using System.Threading.Tasks;
using Quartz;
using Quartz.Impl;

namespace QuartzQuickStart
{
    // 1. Job (Aufgabe) erstellen
    public class HelloJob : IJob
    {
        public async Task Execute(IJobExecutionContext context)
        {
            await Console.Out.WriteLineAsync($"Hallo, Quartz! Zeit: {DateTime.Now:HH:mm:ss}");
        }
    }

    class Program
    {
        static async Task Main(string[] args)
        {
            // 2. Scheduler-Factory erstellen
            StdSchedulerFactory factory = new StdSchedulerFactory();

            // 3. Scheduler abrufen
            IScheduler scheduler = await factory.GetScheduler();

            // 4. Scheduler starten
            await scheduler.Start();

            // 5. Aufgabe (Job) definieren
            IJobDetail job = JobBuilder.Create()
                .WithIdentity("myJob", "group1")
                .Build();

            // 6. Trigger (Zeitplan) definieren
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("myTrigger", "group1")
                .StartNow()
                .WithSimpleSchedule(x => x
                    .WithIntervalInSeconds(5)
                    .RepeatForever())
                .Build();

            // 7. Aufgabe und Trigger im Scheduler registrieren
            await scheduler.ScheduleJob(job, trigger);

            // 8. Warten, damit die Konsole nicht schließt
            await Task.Delay(TimeSpan.FromSeconds(30));

            // 9. Scheduler anhalten
            await scheduler.Shutdown();
        }
    }
}

Wichtige Klassen, Methoden und Schnittstellen

Empfehlungen