Es ist immer wieder hilfreich einen bestimmten Task in einem bestimmten Zeitpunkt oder Zeitraum zu starten und auszuführen. Für das .NET-Framework gibt es seit einiger Zeit das Projekt Quarz.NET. Dieses wird stätig weiterentwickelt und gepflegt. Seit einiger Zeit befindet es sich auch in der NuGet-Gallery wieder, was die Installation in eine Projekt, für Anfänger erleichtert.
Wir starten unser Beispiel, indem wir eine neue Konsolenanwendung in der Sprache C# in VisualStudio erstellen.
Als nächstes öffnen wir den Projektbaum unseres Programms und öffnen die „NuGet-Pakete verwalten…“-Option
In der NuGet-Verwaltung suchen wir nach Quartz. Hier werden wir sofort fündig..
Diesen Verweis lassen wir nun in unser Projekt installieren. Fehlende Abhängigkeiten werden automatisch aufgelöst und somit weitere notwendige Verweise ggf. nachgepflegt.
In unserem Projekt finden wir unter Verweise nun Quarz wieder
Als nächstes benötigen wir ein Programm. Hier ist ein Beispiel, das etwas von den Beispielen auf der offiziellen Webseite beinhaltet.
using Quartz; using Quartz.Impl; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Quarz_NET { class Program { static void Main(string[] args) { try { Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter { Level = Common.Logging.LogLevel.Info }; // Scheduler mit Default-Werten anlegen IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); // Scheduler starten scheduler.Start(); // Einen neuen Job erstellen. Dafür die Klasse TestExec nutzten IJobDetail job = JobBuilder.Create<TestExec>() .WithIdentity("job1", "group1") .Build(); // Einen Trigger erstellen, der das Programm alle 10.Sekunden startet ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartNow() .WithSimpleSchedule(x => x .WithIntervalInSeconds(10) .RepeatForever()) .Build(); // Im Scheduler den Job und den Trigger übergeben scheduler.ScheduleJob(job, trigger); Console.WriteLine("Tastendruck beendet Ablauf"); Console.ReadKey(); // Wenn Taste gedrückt, dann Programm beenden scheduler.Shutdown(); } catch (SchedulerException se) { Console.WriteLine(se); } } public class TestExec : IJob { public void Execute(IJobExecutionContext context) { //Ausgabe des gestarteten Task mit Uhrzeit + Millisekunden DateTime DateTimeNow = DateTime.Now; Console.WriteLine(DateTimeNow.ToString("yyyy-MM-dd HH:mm:ss.fff") + "Task wurde ausgelöst!"); } } } }
Wenn wir das Programm nun per drücken auf F5 starten beginnt sich die Konsole zu öffnen und eine Ausgabe geschieht. Anhand des Codes und den Kommentaren sollte der logische Programablauf sichtbar sein.
Ausgabe des Programms in der Konsole
Schreibe einen Kommentar