namespace dy.net.service { public sealed class OpenListTransferWorker : BackgroundService { private readonly IServiceScopeFactory _scopeFactory; public OpenListTransferWorker(IServiceScopeFactory scopeFactory) => _scopeFactory = scopeFactory; protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { try { using var scope = _scopeFactory.CreateScope(); var worked = await scope.ServiceProvider.GetRequiredService() .RecoverOneAsync(stoppingToken); if (!worked) await Task.Delay(TimeSpan.FromSeconds(3), stoppingToken); } catch (OperationCanceledException) when (stoppingToken.IsCancellationRequested) { } catch (Exception ex) { Serilog.Log.Error(ex, "OpenList 传输恢复服务异常"); await Task.Delay(TimeSpan.FromSeconds(5), stoppingToken); } } } } }