Files
douyin/service/OpenListTransferWorker.cs

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);
}
}
}
}
}