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);