using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System; using System.Diagnostics; 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) { try { await this.upgradeService.UpgradeAsync(stoppingToken); } catch (Exception ex) { this.logger.LogWarning($"升级失败:{ex.Message}"); } if (OperatingSystem.IsWindows() && Process.GetCurrentProcess().SessionId > 0) { await Task.Delay(TimeSpan.FromSeconds(2d), stoppingToken); Process.Start(new ProcessStartInfo { UseShellExecute = true, FileName = "https://localhost" }); } } } }