mirror of
https://github.com/netchx/netch.git
synced 2026-03-18 18:13:21 +08:00
Update Async
This commit is contained in:
@@ -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
|
||||
/// <returns>是否启动成功</returns>
|
||||
/// <exception cref="MessageException"></exception>
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 停止
|
||||
/// </summary>
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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<Setting>(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<Setting>(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);
|
||||
|
||||
11
Netch/Utils/TplExtensions.cs
Normal file
11
Netch/Utils/TplExtensions.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Netch.Utils
|
||||
{
|
||||
public static class TplExtensions
|
||||
{
|
||||
public static void Forget(this Task? task)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user