2026-05-20 21:39:12 +08:00

41 lines
1.1 KiB
C#

namespace Neta.Tray;
public static class ShutdownCommand
{
public static void Run()
{
Run(AppContext.BaseDirectory);
}
public static void Run(string baseDirectory)
{
var backendExePath = Path.Combine(baseDirectory, "backend.exe");
var processManager = new BackendProcessManager();
var runtime = RuntimeInfoStore.LoadFromInstalledConfig(baseDirectory);
if (runtime is not null)
{
using var httpClient = new HttpClient();
var statusClient = new StatusClient(httpClient);
try
{
statusClient.StopAsync(runtime, CancellationToken.None).GetAwaiter().GetResult();
}
catch
{
}
processManager.WaitForExit(runtime.Pid, TimeSpan.FromSeconds(10));
if (processManager.IsBackendProcessAlive(runtime.Pid))
{
processManager.KillProcess(runtime.Pid);
}
}
processManager.KillInstalledBackendProcesses(backendExePath);
}
public static void OpenExistingInstance()
{
}
}