Files
EnvelopeGenerator/EnvelopeGenerator.ServiceHost/Worker.cs
TekH 71bfe3b323 Refactor Worker to resolve FinalizeDocumentJob per scope
Refactored Worker to use IServiceScopeFactory instead of directly injecting FinalizeDocumentJob. Now, a new scope is created in each loop iteration, and FinalizeDocumentJob is resolved from the scoped service provider. This enables FinalizeDocumentJob to use scoped dependencies and improves DI flexibility.
2026-04-09 13:20:02 +02:00

35 lines
1.2 KiB
C#

using EnvelopeGenerator.ServiceHost.Jobs;
namespace EnvelopeGenerator.ServiceHost;
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private readonly int _delayMilliseconds;
private readonly IServiceScopeFactory _scopeFactory;
public Worker(ILogger<Worker> logger, IConfiguration configuration, IServiceScopeFactory scopeFactory)
{
_logger = logger;
_delayMilliseconds = Math.Max(1, configuration.GetValue("Worker:DelayMilliseconds", 1000));
_scopeFactory = scopeFactory;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
if (_logger.IsEnabled(LogLevel.Information))
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
}
using var scope = _scopeFactory.CreateScope();
var finalizeDocumentJob = scope.ServiceProvider.GetRequiredService<FinalizeDocumentJob>();
await finalizeDocumentJob.ExecuteAsync(stoppingToken);
await Task.Delay(_delayMilliseconds, stoppingToken);
}
}
}