From 5495b94513c696d462d46aecee6f4b1dec29d2c1 Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Thu, 30 Jul 2020 21:31:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E6=8E=A5=E6=94=B6=E6=96=B9=E6=B3=95,=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=90=AF=E5=8A=A8=E6=8E=A7=E5=88=B6=E5=99=A8=E6=97=B6?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E6=B8=85=E9=99=A4=E4=B8=8A=E6=AC=A1=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E7=9A=84=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Netch/Controllers/Interface/Controller.cs | 40 ++++++++--------------- Netch/Controllers/MainController.cs | 2 ++ 2 files changed, 15 insertions(+), 27 deletions(-) diff --git a/Netch/Controllers/Interface/Controller.cs b/Netch/Controllers/Interface/Controller.cs index 53302a7f..31468936 100644 --- a/Netch/Controllers/Interface/Controller.cs +++ b/Netch/Controllers/Interface/Controller.cs @@ -3,7 +3,9 @@ using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; +using System.Linq; using System.Text; +using System.Threading.Tasks; using Netch.Models; using Netch.Utils; @@ -137,40 +139,24 @@ namespace Netch.Controllers /// 数据 protected void OnOutputDataReceived(object sender, DataReceivedEventArgs e) { - var str = Encoding.UTF8.GetString(Encoding.GetEncoding("gbk").GetBytes(e.Data??string.Empty)); + // 程序结束接收到 null + if (e.Data == null) + { + State = State.Stopped; + return; + } + var str = Encoding.UTF8.GetString(Encoding.GetEncoding("gbk").GetBytes(e.Data ?? string.Empty)); // 写入日志 - if (!Write(str)) return; + Task.Run(() => Write(str)); // 检查启动 if (State == State.Starting) { - if (Instance.HasExited) - { + if (_startedKeywords.Any(s => str.Contains(s))) + State = State.Started; + else if (_stoppedKeywords.Any(s => str.Contains(s))) State = State.Stopped; - - return; - } - - foreach (var s in _startedKeywords) - { - if (str.Contains(s)) - { - State = State.Started; - - return; - } - } - - foreach (var s in _stoppedKeywords) - { - if (str.Contains(s)) - { - State = State.Stopped; - - return; - } - } } } } diff --git a/Netch/Controllers/MainController.cs b/Netch/Controllers/MainController.cs index 49b42151..22252295 100644 --- a/Netch/Controllers/MainController.cs +++ b/Netch/Controllers/MainController.cs @@ -86,6 +86,7 @@ namespace Netch.Controllers } Global.MainForm.StatusText(i18N.Translate("Starting ", pEncryptedProxyController.Name)); + pEncryptedProxyController.ClearLog(); result = pEncryptedProxyController.Start(server, mode); } @@ -112,6 +113,7 @@ namespace Netch.Controllers if (pModeController != null) { Global.MainForm.StatusText(i18N.Translate("Starting ", pModeController.Name)); + pModeController.ClearLog(); result = pModeController.Start(server, mode); }