Files
Il2CppInspectorRedux/Il2CppInspector.Redux.GUI/UiProcessService.cs
2025-01-25 15:37:43 +01:00

32 lines
935 B
C#

using System.Diagnostics;
namespace Il2CppInspector.Redux.GUI;
public class UiProcessService(IHostApplicationLifetime lifetime) : BackgroundService
{
private const string UiExecutableName = "Il2CppInspector.Redux.GUI.UI.exe";
private Process? _uiProcess;
public void LaunchUiProcess(int port)
{
_uiProcess = Process.Start(new ProcessStartInfo(UiExecutableName, [port.ToString()]));
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (_uiProcess == null)
await Task.Delay(TimeSpan.FromMilliseconds(10), stoppingToken);
await _uiProcess.WaitForExitAsync(stoppingToken);
lifetime.StopApplication();
}
public override Task StopAsync(CancellationToken cancellationToken)
{
if (_uiProcess is { HasExited: false })
_uiProcess.Kill();
return base.StopAsync(cancellationToken);
}
}