using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System; using System.Threading; using System.Threading.Tasks; namespace FastGithub.Upgrade { /// /// 升级后台服务 /// sealed class UpgradeHostedService : BackgroundService { private readonly UpgradeService upgradeService; private readonly ILogger logger; /// /// 升级后台服务 /// /// public UpgradeHostedService( UpgradeService upgradeService, ILogger logger) { this.upgradeService = upgradeService; this.logger = logger; } /// /// 检测版本 /// /// /// protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var maxTryCount = 3; for (var i = 1; i <= maxTryCount; i++) { try { await Task.Delay(TimeSpan.FromSeconds(2d), stoppingToken); await this.upgradeService.UpgradeAsync(stoppingToken); break; } catch (Exception ex) { if (i == maxTryCount) { this.logger.LogWarning($"升级失败:{ex.Message}"); } } } } } }