MainController.StopAsync() Exception handling

This commit is contained in:
ChsBuffer
2021-03-06 04:49:11 +08:00
parent 10ba299f4d
commit bd71452206
2 changed files with 27 additions and 28 deletions

View File

@@ -49,7 +49,12 @@ namespace Netch.Controllers
/// <param name="mode">模式</param>
/// <returns>是否启动成功</returns>
/// <exception cref="MessageException"></exception>
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
/// <summary>
/// 停止
/// </summary>
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;
}

View File

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