using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System; using System.Threading; using System.Threading.Tasks; namespace FastGithub.Upgrade { /// /// 升级后台服务 /// sealed class UpgradeHostedService : IHostedService { private readonly IServiceScopeFactory serviceScopeFactory; private readonly ILogger logger; /// /// 升级后台服务 /// /// /// public UpgradeHostedService( IServiceScopeFactory serviceScopeFactory, ILogger logger) { this.serviceScopeFactory = serviceScopeFactory; this.logger = logger; } /// /// 检测版本 /// /// /// public async Task StartAsync(CancellationToken cancellationToken) { try { using var scope = this.serviceScopeFactory.CreateScope(); var upgradeService = scope.ServiceProvider.GetRequiredService(); await upgradeService.UpgradeAsync(cancellationToken); } catch (Exception ex) { this.logger.LogWarning($"升级失败:{ex.Message}"); } } public Task StopAsync(CancellationToken cancellationToken) { return Task.CompletedTask; } } }