From 6954a86358132e9ff1fb124575c316f51db16a81 Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 13 Apr 2026 16:31:00 +0200 Subject: [PATCH] Add job state check and improve Worker options handling Refactored Worker to inject JobStateManager and use the full WorkerOptions object. Now, FinalizeDocumentJob only runs if its state is State.Running. Delay is also read from options, improving configuration and control over job execution. --- EnvelopeGenerator.ServiceHost/Worker.cs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/EnvelopeGenerator.ServiceHost/Worker.cs b/EnvelopeGenerator.ServiceHost/Worker.cs index 09ec492d..e94b03a7 100644 --- a/EnvelopeGenerator.ServiceHost/Worker.cs +++ b/EnvelopeGenerator.ServiceHost/Worker.cs @@ -6,13 +6,15 @@ namespace EnvelopeGenerator.ServiceHost; public class Worker : BackgroundService { private readonly ILogger _logger; - private readonly int _delayMilliseconds; + private readonly WorkerOptions _options; + private readonly JobStateManager _jobStateManager; private readonly IServiceScopeFactory _scopeFactory; - public Worker(ILogger logger, IOptions options, IServiceScopeFactory scopeFactory) + public Worker(ILogger logger, IOptions options, JobStateManager jobStateManager, IServiceScopeFactory scopeFactory) { _logger = logger; - _delayMilliseconds = options.Value.DelayMilliseconds; + _options = options.Value; + _jobStateManager = jobStateManager; _scopeFactory = scopeFactory; } @@ -25,11 +27,14 @@ public class Worker : BackgroundService _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); } - using var scope = _scopeFactory.CreateScope(); - var finalizeDocumentJob = scope.ServiceProvider.GetRequiredService(); - await finalizeDocumentJob.ExecuteAsync(stoppingToken); + if (_jobStateManager.GetState() == State.Running) + { + using var scope = _scopeFactory.CreateScope(); + var finalizeDocumentJob = scope.ServiceProvider.GetRequiredService(); + await finalizeDocumentJob.ExecuteAsync(stoppingToken); + } - await Task.Delay(_delayMilliseconds, stoppingToken); + await Task.Delay(_options.DelayMilliseconds, stoppingToken); } } -} +} \ No newline at end of file