Files
Torch/Torch.Server/ApplicationRestartHelper.cs

39 lines
1010 B
C#

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<string> list, string item)
{
var index = list.BinarySearch(item, StringComparer.OrdinalIgnoreCase);
if (index < 0) return;
list.RemoveAt(index);
list.RemoveAt(index);
}
}