From 58c5f9d08698108eb3084f71220d0d8b697dc2d1 Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Sat, 26 Jun 2021 16:47:46 +0800 Subject: [PATCH] Update Async --- Netch/Controllers/MainController.cs | 20 +++----------------- Netch/Forms/MainForm.cs | 10 +++++----- Netch/Utils/Configuration.cs | 19 +++++++++++-------- Netch/Utils/TplExtensions.cs | 11 +++++++++++ 4 files changed, 30 insertions(+), 30 deletions(-) create mode 100644 Netch/Utils/TplExtensions.cs diff --git a/Netch/Controllers/MainController.cs b/Netch/Controllers/MainController.cs index 26f6de35..a8c1a41f 100644 --- a/Netch/Controllers/MainController.cs +++ b/Netch/Controllers/MainController.cs @@ -13,7 +13,6 @@ namespace Netch.Controllers { public static Mode? Mode; - /// TCP or Both Server public static Server? Server; private static Server? _udpServer; @@ -50,11 +49,6 @@ namespace Netch.Controllers /// 是否启动成功 /// public static async Task StartAsync(Server server, Mode mode) - { - await Task.Run(() => Start(server, mode)); - } - - public static void Start(Server server, Mode mode) { Log.Information("启动主控制器: {Server} {Mode}", $"{server.Type}", $"[{(int)mode.Type}]{mode.Remark}"); Server = server; @@ -81,7 +75,7 @@ namespace Netch.Controllers } catch (Exception e) { - Stop(); + await StopAsync(); switch (e) { @@ -131,21 +125,13 @@ namespace Netch.Controllers } public static async Task StopAsync() - { - await Task.Run(Stop); - } - - /// - /// 停止 - /// - public static void Stop() { if (_serverController == null && ModeController == null) return; StatusPortInfoText.Reset(); - _ = Task.Run(() => NTTController.Stop()); + Task.Run(() => NTTController.Stop()).Forget(); var tasks = new[] { @@ -155,7 +141,7 @@ namespace Netch.Controllers try { - Task.WaitAll(tasks); + await Task.WhenAll(tasks); } catch (Exception e) { diff --git a/Netch/Forms/MainForm.cs b/Netch/Forms/MainForm.cs index 0d64b3b4..4c6c1236 100644 --- a/Netch/Forms/MainForm.cs +++ b/Netch/Forms/MainForm.cs @@ -501,14 +501,14 @@ namespace Netch.Forms State = State.Started; - _ = Task.Run(Bandwidth.NetTraffic); - _ = Task.Run(NatTest); + Task.Run(Bandwidth.NetTraffic).Forget(); + Task.Run(NatTest).Forget(); if (Global.Settings.MinimizeWhenStarted) Minimize(); // 自动检测延迟 - _ = Task.Run(() => + Task.Run(() => { while (State == State.Started) if (Global.Settings.StartedPingInterval >= 0) @@ -522,7 +522,7 @@ namespace Netch.Forms { Thread.Sleep(5000); } - }); + }).Forget(); } #endregion @@ -620,7 +620,7 @@ namespace Netch.Forms else { ServerHelper.DelayTestHelper.TestDelayFinished += OnTestDelayFinished; - _ = Task.Run(ServerHelper.DelayTestHelper.TestAllDelay); + Task.Run(ServerHelper.DelayTestHelper.TestAllDelay).Forget(); void OnTestDelayFinished(object? o1, EventArgs? e1) { diff --git a/Netch/Utils/Configuration.cs b/Netch/Utils/Configuration.cs index e3daaef5..b4de4f06 100644 --- a/Netch/Utils/Configuration.cs +++ b/Netch/Utils/Configuration.cs @@ -59,12 +59,15 @@ namespace Netch.Utils { try { - await using var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true); - var settings = (await JsonSerializer.DeserializeAsync(fs, JsonSerializerOptions))!; + var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true); + await using (fs.ConfigureAwait(false)) + { + var settings = (await JsonSerializer.DeserializeAsync(fs, JsonSerializerOptions).ConfigureAwait(false))!; - CheckSetting(settings); - Global.Settings = settings; - return true; + CheckSetting(settings); + Global.Settings = settings; + return true; + } } catch (Exception e) { @@ -96,10 +99,10 @@ namespace Netch.Utils Directory.CreateDirectory(DataDirectoryFullName); var tempFile = Path.Combine(DataDirectoryFullName, FileFullName + ".tmp"); - - await using (var fileStream = new FileStream(tempFile, FileMode.Create, FileAccess.Write, FileShare.None, 4096, true)) + var fileStream = new FileStream(tempFile, FileMode.Create, FileAccess.Write, FileShare.None, 4096, true); + await using (fileStream.ConfigureAwait(false)) { - await JsonSerializer.SerializeAsync(fileStream, Global.Settings, JsonSerializerOptions); + await JsonSerializer.SerializeAsync(fileStream, Global.Settings, JsonSerializerOptions).ConfigureAwait(false); } File.Replace(tempFile, FileFullName, BackupFileFullName); diff --git a/Netch/Utils/TplExtensions.cs b/Netch/Utils/TplExtensions.cs new file mode 100644 index 00000000..a11d6ddc --- /dev/null +++ b/Netch/Utils/TplExtensions.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; + +namespace Netch.Utils +{ + public static class TplExtensions + { + public static void Forget(this Task? task) + { + } + } +} \ No newline at end of file