c # - Sådan planlægger du opgaver ved hjælp af Quartz.Net i en Windows Service?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har oprettet et windows service projekt i VS og i det konfigurerer jeg Quartz.Net til at køre en opgave med det samme. Koden, der registrerer opgaven, kører uden undtagelse, men opgaven udføres aldrig så vidt min fejlfinding kan fortælle.


Jeg kan ikke være sikker på, fordi debugging en Windows Service er meget anderledes. Måden jeg gør det er at programmere starte debuggeren fra min kode. Quartz.Net kører job på separate tråde, men jeg er ikke sikker på om VS2010 kan se Andre kørende tråde, når fejlsøgning af en Windows-tjeneste.


Har nogen gjort hvad jeg forsøger før? Nogle tips er værdsat.


PS. Jeg vil ikke bruge Quartz.Nets egen Service.

Bedste reference


En af de mest almindelige grunde, som et job ikke udfører, skyldes, at du skal kalde Start () -metoden på planlægningsinstansen.


http://quartznet.sourceforge.net/faq.html#whytriggerisntfiring[2]


Men det er svært at sige, hvad problemet er, hvis vi ikke har en slags uddrag af koden, der gør planlæggerens oprettelse og jobregistrering.

Andre referencer 1


Jeg ser at dette er lidt dateret, men det kom mange gange op i forskellige søgninger!


Helt ud af denne artikel, der bruger en XML-konfiguration, når scheduleren er instantiated.
http://miscellaneousrecipesfordotnet.blogspot.com/2012/09/quick-sample-to-schedule-tasks-using.html[3]


Hvis du hellere ikke vil bruge XML (dynamisk oprettede opgaver og lignende), skal du erstatte 'Kør' -proceduren fra artiklen ovenfor med noget som dette:


    public void Run()
    {
        // construct a scheduler factory
        ISchedulerFactory schedulerFactory = new StdSchedulerFactory();

        \_scheduler = schedulerFactory.GetScheduler();

        IJobDetail job = JobBuilder.Create<TaskOne>()
                .WithIdentity("TaskOne", "TaskOneGroup")
                .Build();
        ITrigger trigger = TriggerBuilder.Create()
        .WithIdentity("TaskOne", "TaskOneGroup")
        .StartNow()
        .WithSimpleSchedule(x => x.WithIntervalInSeconds(20).RepeatForever())
        .Build();
        \_scheduler.ScheduleJob(job, trigger);
        \_scheduler.TriggerJob(job.Key);

        \_scheduler.Start();
    }


Bemærk - Brug af Quartz .NET 2.1.2, .NET 4


Skål!

Andre referencer 2


Jeg har tidligere brugt Quart.NET før i en Windows-tjeneste. Når tjenesten starter, opretter jeg Scheduler Factory og får derefter Scheduler. Jeg starter så planlæggeren, som implicit læser i konfigurationen XML, jeg har angivet i App.config for tjenesten.


Quartz.NET grundlæggende opsætning: http://quartznet.sourceforge.net/tutorial/lesson\_1.html[4]


App.config Setup Spørgsmål: http://groups.google.com/group/quartznet/browse\_thread/thread/abbfbc1b65e20d63/b1c55cf5dabd3acd?lnk=gstu0026amp;q=\%3Cquartz\%3E#b1c55cf5dabd3acd[5]