From e6808ed9edaaeb2398069d3da737e5e03bc942ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=9B=BD=E4=BC=9F?= <366193849@qq.com> Date: Thu, 22 Jul 2021 13:12:17 +0800 Subject: [PATCH] =?UTF-8?q?dnscryptProxy=E6=9C=8D=E5=8A=A1=E5=81=A5?= =?UTF-8?q?=E5=BA=B7=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DnscryptProxyHostedService.cs | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/FastGithub.Dns.DnscryptProxy/DnscryptProxyHostedService.cs b/FastGithub.Dns.DnscryptProxy/DnscryptProxyHostedService.cs index 3a8974c..9890585 100644 --- a/FastGithub.Dns.DnscryptProxy/DnscryptProxyHostedService.cs +++ b/FastGithub.Dns.DnscryptProxy/DnscryptProxyHostedService.cs @@ -10,7 +10,7 @@ namespace FastGithub.Dns.DnscryptProxy /// /// DnscryptProxy后台服务 /// - sealed class DnscryptProxyHostedService : IHostedService + sealed class DnscryptProxyHostedService : BackgroundService { private const string dnscryptProxyFile = "dnscrypt-proxy"; private readonly ILogger logger; @@ -29,7 +29,7 @@ namespace FastGithub.Dns.DnscryptProxy /// /// /// - public Task StartAsync(CancellationToken cancellationToken) + public override Task StartAsync(CancellationToken cancellationToken) { try { @@ -48,7 +48,8 @@ namespace FastGithub.Dns.DnscryptProxy { this.logger.LogWarning($"{dnscryptProxyFile}启动失败:{ex.Message}"); } - return Task.CompletedTask; + + return base.StartAsync(cancellationToken); } /// @@ -56,7 +57,7 @@ namespace FastGithub.Dns.DnscryptProxy /// /// /// - public Task StopAsync(CancellationToken cancellationToken) + public override Task StopAsync(CancellationToken cancellationToken) { try { @@ -76,9 +77,26 @@ namespace FastGithub.Dns.DnscryptProxy { this.logger.LogWarning($"{dnscryptProxyFile}停止失败:{ex.Message}"); } - return Task.CompletedTask; + return base.StopAsync(cancellationToken); } + /// + /// 后台任务 + /// + /// + /// + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (stoppingToken.IsCancellationRequested == false) + { + await Task.Delay(TimeSpan.FromSeconds(10d), stoppingToken); + var processes = Process.GetProcessesByName(dnscryptProxyFile); + if (processes.Length == 0) + { + this.logger.LogError($"检测到{dnscryptProxyFile}已停止运行,{nameof(FastGithub)}将无法使用。你可以把配置文件的PureDns修改为其它可用的DNS以临时使用。"); + } + } + } /// /// 启动DnscryptProxy进程