refactor: 项目稳定性优化

This commit is contained in:
2026-01-17 17:00:15 +08:00
parent 7abd445039
commit c276e9e2b9
7 changed files with 135 additions and 110 deletions

View File

@@ -11,12 +11,16 @@ namespace TimerApp
private const string MutexName = "Local\\TimerApp.SingleInstance";
private const string PipeName = "TimerApp.SingleInstancePipe";
private readonly Mutex _mutex;
private readonly Mutex? _mutex;
private readonly bool _ownsMutex;
private readonly bool _enableIpc;
private readonly CancellationTokenSource _cts = new();
private SingleInstanceManager(Mutex mutex)
private SingleInstanceManager(Mutex? mutex, bool ownsMutex, bool enableIpc)
{
_mutex = mutex;
_ownsMutex = ownsMutex;
_enableIpc = enableIpc;
}
public static bool TryAcquire(out SingleInstanceManager? manager)
@@ -32,11 +36,12 @@ namespace TimerApp
return false;
}
manager = new SingleInstanceManager(mutex);
manager = new SingleInstanceManager(mutex, ownsMutex: true, enableIpc: true);
return true;
}
catch
{
manager = new SingleInstanceManager(mutex: null, ownsMutex: false, enableIpc: false);
return true;
}
}
@@ -57,6 +62,7 @@ namespace TimerApp
public void StartServer(Action onShowRequested)
{
if (!_enableIpc) return;
Task.Run(() => ServerLoop(onShowRequested, _cts.Token));
}
@@ -104,15 +110,17 @@ namespace TimerApp
try
{
_mutex.ReleaseMutex();
if (_ownsMutex)
{
_mutex?.ReleaseMutex();
}
}
catch
{
}
_mutex.Dispose();
_mutex?.Dispose();
_cts.Dispose();
}
}
}