using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; namespace Torch.Server; internal static class ApplicationRestartHelper { public static void RestartApplication() { var exe = Path.Combine(AppContext.BaseDirectory, "Torch.Server.exe"); var args = Environment.GetCommandLineArgs().ToList(); args.RemoveAt(0); // dll entry path args.RemoveConfigItem("--tempAutostart"); args.RemoveConfigItem("--waitForPid"); args.AddRange([ "--waitForPid", Environment.ProcessId.ToString(), "--tempAutostart", "true" ]); Process.Start(new ProcessStartInfo(exe, args)); } private static void RemoveConfigItem(this List list, string item) { var index = list.BinarySearch(item, StringComparer.OrdinalIgnoreCase); if (index < 0) return; list.RemoveAt(index); list.RemoveAt(index); } }