Ausführung mehrerer Quartz.NET jobs mit Topshelf

Ich bin versucht, laufen mehrere Arbeitsplätze mit Quartz.NET und Topshelf mit C#.

HostFactory.Run(c =>
{
    c.ScheduleQuartzJobAsService(q =>
        q.WithJob(() => JobBuilder.Create<TypeA>().Build())
        .AddTrigger(() => TriggerBuilder.Create().WithSimpleSchedule(builder => builder.WithIntervalInSeconds(ConfigurationSettings.AppFrequencyInSeconds).RepeatForever()).Build())
        ).StartAutomatically().
        ScheduleQuartzJobAsService(r => 
        r.WithJob(() => JobBuilder.Create<TypeB>().Build())
        .AddTrigger(() => TriggerBuilder.Create().WithSimpleSchedule(builder => builder.
            WithIntervalInSeconds(ConfigurationSettings.AppFrequencyInSeconds).RepeatForever()).Build())
            ).StartAutomatically();
    c.StartAutomatically();
    c.SetServiceName("ServiceName");
});

Mithilfe der oben genannten code, nur die execute-Methode in TypeB ausgeführt. Ich habe auch versucht:

HostFactory.Run(c =>
{
    c.ScheduleQuartzJobAsService(q =>
        q.WithJob(() => JobBuilder.Create<TypeA>().Build())
        .AddTrigger(() => TriggerBuilder.Create().WithSimpleSchedule(builder => builder.
            WithIntervalInSeconds(ConfigurationSettings.AppFrequencyInSeconds).RepeatForever()).Build())
        ).StartAutomatically();
    c.StartAutomatically();
    c.SetServiceName("Service1");

    c.ScheduleQuartzJobAsService(r =>
        r.WithJob(() => JobBuilder.Create<TypeB>().Build())
        .AddTrigger(() => TriggerBuilder.Create().WithSimpleSchedule(builder => builder.
            WithIntervalInSeconds(ConfigurationSettings.AppFrequencyInSeconds).RepeatForever()).Build())
        ).StartAutomatically();
    c.StartAutomatically();
    c.SetServiceName("Service2");
});

Mit diesem code nur die execute-Methode in TypeB genannt wird. Meine beiden Klassen Typ a und TypeB haben 'Execute' - Methoden sind die Einstiegspunkte für jede Klasse (die aufgerufen werden, wenn Sie Teil eines Auftrags auf Ihre eigenen). Es scheint, dass egal welches service-code ist der zweite ist der, der immer dann aufgerufen wird, wenn ich die Reihenfolge tauschen der beiden ScheduleQuartzJobAsService fordert, es ist immer die Klasse, die im zweiten Aufruf, ausgeführt wird.

Wie kann ich schreiben, dass meine HostFactory.Run-Methode, so werden beide jobs parallel ausgeführt?

InformationsquelleAutor Citrus | 2014-08-14
Schreibe einen Kommentar