namespace SinMaiLauncher.ChildProcessHolder; internal class ChildProcessStateBagForWin(ChildProcessKind kind, IProcessStartInfo startInfo) : ChildProcessStateBag(kind, startInfo) { public nint? HWndMainWindow => MainWindowHWnd; protected override async Task CheckReadyAsync() { Status = ChildProcessStatus.WaitingReady; if (await WaitForInputIdleAsync(TimeSpan.FromSeconds(5)) == false) return false; return true; } public override async Task StopAsync(TimeSpan timeout) { Status = ChildProcessStatus.Stopping; CloseMainForm(); await Task.WhenAny(Task.Delay(timeout), WaitForExitAsync()); await base.StopAsync(timeout); } }