diff --git a/src/activities/Elsa.Activities.Timers/HostedServices/StartJobs.cs b/src/activities/Elsa.Activities.Timers/HostedServices/StartJobs.cs index fdd405228..13fa755f9 100644 --- a/src/activities/Elsa.Activities.Timers/HostedServices/StartJobs.cs +++ b/src/activities/Elsa.Activities.Timers/HostedServices/StartJobs.cs @@ -17,7 +17,7 @@ namespace Elsa.Activities.Timers.HostedServices /// /// Starts Quartz jobs based on workflow blueprints starting with a TimerEvent, CronEvent or StartAtEvent. /// - public class StartJobs : IHostedService + public class StartJobs : BackgroundService { private readonly IServiceProvider _serviceProvider; private readonly IWorkflowBlueprintReflector _workflowBlueprintReflector; @@ -32,20 +32,18 @@ namespace Elsa.Activities.Timers.HostedServices _clock = clock; } - public async Task StartAsync(CancellationToken cancellationToken) + protected override async Task ExecuteAsync(CancellationToken stoppingToken) { using var scope = _serviceProvider.CreateScope(); var workflowRegistry = scope.ServiceProvider.GetRequiredService(); var workflowSelector = scope.ServiceProvider.GetRequiredService(); - var workflows = await workflowRegistry.GetWorkflowsAsync(cancellationToken).ToListAsync(cancellationToken); + var workflows = await workflowRegistry.GetWorkflowsAsync(stoppingToken).ToListAsync(stoppingToken); - await ScheduleTimerEventWorkflowsAsync(scope, workflows, workflowSelector, cancellationToken); - await ScheduleCronEventWorkflowsAsync(scope, workflows, workflowSelector, cancellationToken); - await ScheduleStartAtWorkflowsAsync(scope, workflows, workflowSelector, cancellationToken); + await ScheduleTimerEventWorkflowsAsync(scope, workflows, workflowSelector, stoppingToken); + await ScheduleCronEventWorkflowsAsync(scope, workflows, workflowSelector, stoppingToken); + await ScheduleStartAtWorkflowsAsync(scope, workflows, workflowSelector, stoppingToken); } - public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; - private async Task ScheduleStartAtWorkflowsAsync(IServiceScope serviceScope, IEnumerable workflows, IWorkflowSelector workflowSelector, CancellationToken cancellationToken) { // Schedule workflow blueprints that start with a run-at.