32 lines
935 B
C#
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);
|
|
}
|
|
} |