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