Files
Il2CppInspectorRedux/Il2CppInspector.Redux.GUI/UiProcessService.cs

33 lines
1.0 KiB
C#

using System.Diagnostics;
namespace Il2CppInspector.Redux.GUI;
public class UiProcessService(IHostApplicationLifetime lifetime) : BackgroundService
{
// NOTE: this is not really a good solution for getting people to launch the correct program.
private const string UiExecutableName = "./resources/il2cppinspectorredux.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);
}
}