public sealed class DataSyncBackgroundService : BackgroundService
{
private readonly IServiceScopeFactory _scopeFactory;
private readonly ILogger<DataSyncBackgroundService> _logger;
public DataSyncBackgroundService(
IServiceScopeFactory scopeFactory,
ILogger<DataSyncBackgroundService> logger)
{
_scopeFactory = scopeFactory;
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
using var timer = new PeriodicTimer(TimeSpan.FromSeconds(30));
do
{
try
{
using var scope = _scopeFactory.CreateScope();
var syncService = scope.ServiceProvider.GetRequiredService<IDataSyncService>();
await syncService.SyncAsync(stoppingToken);
}
catch (Exception ex) when (ex is not OperationCanceledException)
{
_logger.LogError(ex, "Data sync failed");
}
}
while (await timer.WaitForNextTickAsync(stoppingToken));
}
}
public sealed class DataSyncBackgroundService : BackgroundService
{
private readonly IServiceScopeFactory _scopeFactory;
private readonly ILogger<DataSyncBackgroundService> _logger;
public DataSyncBackgroundService(
IServiceScopeFactory scopeFactory,
ILogger<DataSyncBackgroundService> logger)
{
_scopeFactory = scopeFactory;
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
using var timer = new PeriodicTimer(TimeSpan.FromSeconds(30));
do
{
try
{
using var scope = _scopeFactory.CreateScope();
var syncService = scope.ServiceProvider.GetRequiredService<IDataSyncService>();
await syncService.SyncAsync(stoppingToken);
}
catch (Exception ex) when (ex is not OperationCanceledException)
{
_logger.LogError(ex, "Data sync failed");
}
}
while (await timer.WaitForNextTickAsync(stoppingToken));
}
}