30 lines
1.1 KiB
C#
30 lines
1.1 KiB
C#
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<OpenListTransferService>()
|
|
.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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|