Update Async

This commit is contained in:
ChsBuffer
2021-06-26 16:47:46 +08:00
parent 62dc9166ce
commit 58c5f9d086
4 changed files with 30 additions and 30 deletions

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,11 @@
using System.Threading.Tasks;
namespace Netch.Utils
{
public static class TplExtensions
{
public static void Forget(this Task? task)
{
}
}
}