using Microsoft.Extensions.Options; using WorkerService1.Dto.Configuration; using WorkerService1.Services; namespace WorkerService1; public class CloseWorker : BackgroundService { private readonly ILogger _logger; private readonly SpiderServices _spiderServices; private readonly IServiceProvider _serviceProvider; public CloseWorker(ILogger logger, SpiderServices spiderServices, IServiceProvider serviceProvider) { _logger = logger; _spiderServices = spiderServices; _serviceProvider = serviceProvider; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { if (_logger.IsEnabled(LogLevel.Information)) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); } try { await Handle(); } catch (Exception e) { _logger.LogError("执行控制器发生错误,错误信息:ex{}", e.StackTrace); } finally { using var scope = _serviceProvider.CreateScope(); var options = scope.ServiceProvider.GetRequiredService>(); await Task.Delay(options.CurrentValue.Delay, stoppingToken); } } } private async Task Handle() { var listRes = await _spiderServices.GetTaskList(3); if (listRes.IsSuccess) { var needDispose = listRes.Result?.records; //轮询列表,看有没有符合状态的进行处理 if (needDispose?.Any() ?? false) { foreach (var item in needDispose) { //2.结案操作 var result = await _spiderServices.CloseFile(item.caseNumber, ""); } } } } }