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进程