diff --git a/Netch/Controllers/MainController.cs b/Netch/Controllers/MainController.cs index 035baa12..f92dede8 100644 --- a/Netch/Controllers/MainController.cs +++ b/Netch/Controllers/MainController.cs @@ -1,6 +1,7 @@ using System; using System.Diagnostics; using System.IO; +using System.Threading.Tasks; namespace Netch.Controllers { @@ -62,19 +63,19 @@ namespace Netch.Controllers /// 服务器 /// 模式 /// 是否启动成功 - public (bool, string) Start(Models.Server server, Models.Mode mode) + public bool Start(Models.Server server, Models.Mode mode) { - var result = (false, ""); + var result = false; switch (server.Type) { case "Socks5": if (mode.Type == 4) { - result = (false, null); + result = false; } else { - result = (true, null); + result = true; } break; case "SS": @@ -83,7 +84,7 @@ namespace Netch.Controllers { pSSController = new SSController(); } - result = (pSSController.Start(server, mode), null); + result = pSSController.Start(server, mode); break; case "SSR": KillProcess("ShadowsocksR"); @@ -91,7 +92,7 @@ namespace Netch.Controllers { pSSRController = new SSRController(); } - result = (pSSRController.Start(server, mode), null); + result = pSSRController.Start(server, mode); break; case "VMess": KillProcess("v2ray"); @@ -99,11 +100,11 @@ namespace Netch.Controllers { pVMessController = new VMessController(); } - result = (pVMessController.Start(server, mode), null); + result = pVMessController.Start(server, mode); break; } - if (result.Item1) + if (result) { if (mode.Type == 0) { @@ -116,7 +117,13 @@ namespace Netch.Controllers pNTTController = new NTTController(); } // 进程代理模式,启动 NF 控制器 - result = (pNFController.Start(server, mode), pNTTController.Start().Item2); + result = pNFController.Start(server, mode); + + Task.Run(() => + { + pNTTController.Start(); + }); + } else if (mode.Type == 1) { @@ -129,7 +136,12 @@ namespace Netch.Controllers pNTTController = new NTTController(); } // TUN/TAP 黑名单代理模式,启动 TUN/TAP 控制器 - result = (pTUNTAPController.Start(server, mode), pNTTController.Start().Item2); + result = pTUNTAPController.Start(server, mode); + + Task.Run(() => + { + pNTTController.Start(); + }); } else if (mode.Type == 2) { @@ -142,7 +154,12 @@ namespace Netch.Controllers pNTTController = new NTTController(); } // TUN/TAP 白名单代理模式,启动 TUN/TAP 控制器 - result = (pTUNTAPController.Start(server, mode), pNTTController.Start().Item2); + result = pTUNTAPController.Start(server, mode); + + Task.Run(() => + { + pNTTController.Start(); + }); } else if (mode.Type == 3 || mode.Type == 5) { @@ -151,7 +168,7 @@ namespace Netch.Controllers pHTTPController = new HTTPController(); } // HTTP 系统代理和 Socks5 和 HTTP 代理模式,启动 HTTP 控制器 - result = (pHTTPController.Start(server, mode), null); + result = pHTTPController.Start(server, mode); } else if (mode.Type == 4) { @@ -159,11 +176,11 @@ namespace Netch.Controllers } else { - result = (false, null); + result = false; } } - if (!result.Item1) + if (!result) { Stop(); } diff --git a/Netch/Controllers/NTTController.cs b/Netch/Controllers/NTTController.cs index 9ddc5ba8..090d0cfa 100644 --- a/Netch/Controllers/NTTController.cs +++ b/Netch/Controllers/NTTController.cs @@ -24,7 +24,7 @@ namespace Netch.Controllers /// public (bool, string, string, string) Start() { - MainForm.Instance.StatusText($"{Utils.i18N.Translate("Status")}{Utils.i18N.Translate(": ")}{Utils.i18N.Translate("Starting NatTester")}"); + MainForm.Instance.NatTypeStatusText($"{Utils.i18N.Translate("Starting NatTester")}"); try { if (!File.Exists("bin\\NTT.exe")) @@ -50,6 +50,7 @@ namespace Netch.Controllers var natType = result[0]; var localEnd = result[1]; var publicEnd = result[2]; + MainForm.Instance.NatTypeStatusText(natType); return (true, natType, localEnd, publicEnd); } diff --git a/Netch/Forms/MainForm.cs b/Netch/Forms/MainForm.cs index 5320a73e..85082411 100644 --- a/Netch/Forms/MainForm.cs +++ b/Netch/Forms/MainForm.cs @@ -794,17 +794,9 @@ namespace Netch.Forms MainController = new MainController(); - var startResult = MainController.Start(server, mode);//item1是否启动成功,item2nat类型 - if (startResult.Item2 != null) - { - NatTypeStatusLabel.Text = "NatType:" + startResult.Item2; - } - else - { - NatTypeStatusLabel.Text = ""; - } + var startResult = MainController.Start(server, mode); - if (startResult.Item1) + if (startResult) { // UsedBandwidthLabel.Visible = UploadSpeedLabel.Visible = DownloadSpeedLabel.Visible = true; // MainController.pNFController.OnBandwidthUpdated += OnBandwidthUpdated; @@ -1220,8 +1212,13 @@ namespace Netch.Forms MessageBox.Show(Utils.i18N.Translate("Please select a server first"), Utils.i18N.Translate("Information"), MessageBoxButtons.OK, MessageBoxIcon.Information); } } - public void StatusText(string text) { + public void StatusText(string text) + { StatusLabel.Text = text; } + public void NatTypeStatusText(string text) + { + NatTypeStatusLabel.Text = "NatType:" + text; + } } }