diff --git a/Netch/Controllers/MainController.cs b/Netch/Controllers/MainController.cs index 4ff02304..b1c079ca 100644 --- a/Netch/Controllers/MainController.cs +++ b/Netch/Controllers/MainController.cs @@ -49,7 +49,12 @@ namespace Netch.Controllers /// 模式 /// 是否启动成功 /// - public static async Task Start(Server server, Mode mode) + public static async Task StartAsync(Server server, Mode mode) + { + await Task.Run(() => Start(server, mode)); + } + + public static void Start(Server server, Mode mode) { Logging.Info($"启动主控制器: {server.Type} [{mode.Type}]{mode.Remark}"); Server = server; @@ -71,23 +76,15 @@ namespace Netch.Controllers { if (!ModeHelper.SkipServerController(server, mode)) { - await Task.Run(() => StartServer(server, mode, out _serverController)); - + StartServer(server, mode, out _serverController); StatusPortInfoText.UpdateShareLan(); } - await Task.Run(() => StartMode(mode)); + StartMode(mode); } catch (Exception e) { - try - { - await Stop(); - } - catch - { - // ignored - } + StopAsync().Wait(); switch (e) { @@ -154,7 +151,7 @@ namespace Netch.Controllers /// /// 停止 /// - public static async Task Stop() + public static async Task StopAsync() { if (_serverController == null && ModeController == null) return; @@ -169,7 +166,16 @@ namespace Netch.Controllers Task.Run(() => ModeController?.Stop()) }; - await Task.WhenAll(tasks); + try + { + await Task.WhenAll(tasks); + } + catch (Exception e) + { + Logging.Error(e.ToString()); + Utils.Utils.Open(Logging.LogFile); + } + ModeController = null; ServerController = null; } diff --git a/Netch/Forms/MainForm.cs b/Netch/Forms/MainForm.cs index e2805930..8ea9dca1 100644 --- a/Netch/Forms/MainForm.cs +++ b/Netch/Forms/MainForm.cs @@ -343,7 +343,7 @@ namespace Netch.Forms Type = 5 }; - await MainController.Start(server!, mode); + await MainController.StartAsync(server!, mode); proxyServer = $"http://127.0.0.1:{Global.Settings.HTTPLocalPort}"; } @@ -361,14 +361,7 @@ namespace Netch.Forms finally { if (useProxy) - try - { - await MainController.Stop(); - } - catch - { - // ignored - } + await MainController.StopAsync(); DisableItems(true); } @@ -464,7 +457,7 @@ namespace Netch.Forms Type = 5 }; - await MainController.Start(server, mode); + await MainController.StartAsync(server, mode); } } @@ -483,7 +476,7 @@ namespace Netch.Forms finally { if (useProxy) - await MainController.Stop(); + await MainController.StopAsync(); StatusText(); Enabled = true; @@ -639,7 +632,7 @@ namespace Netch.Forms { // 停止 State = State.Stopping; - await MainController.Stop(); + await MainController.StopAsync(); State = State.Stopped; return; } @@ -666,7 +659,7 @@ namespace Netch.Forms try { - await MainController.Start(server, mode); + await MainController.StartAsync(server, mode); } catch (Exception exception) { @@ -1407,7 +1400,7 @@ namespace Netch.Forms File.Delete(file); if (!IsWaiting()) - await MainController.Stop(); + await MainController.StopAsync(); Dispose(); Environment.Exit(Environment.ExitCode);