From d50b0f86bfcdf915a781d7892fb4bf0362a7978e Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 6 Jan 2025 18:00:27 -0700 Subject: [PATCH] asynchronously read processes' stdout/err. seems to fix issue with running edomh. possibly related to #90 --- src/MinEdLauncher/Process.fs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/MinEdLauncher/Process.fs b/src/MinEdLauncher/Process.fs index c044a84..9308016 100644 --- a/src/MinEdLauncher/Process.fs +++ b/src/MinEdLauncher/Process.fs @@ -7,7 +7,10 @@ let launchProcesses (processes:ProcessStartInfo list) = processes |> List.choose (fun p -> try - Process.Start(p) |> Some + let p = Process.Start(p) + p.BeginErrorReadLine() + p.BeginOutputReadLine() + p |> Some with | :? Win32Exception as e -> Log.exn e $"""Unable to start process %s{p.FileName} @@ -29,8 +32,6 @@ let stopProcesses timeout (processes: Process list) = Log.debug $"Stopping process %s{p.ProcessName}" match Interop.termProcess timeout p with | Ok () -> - p.StandardOutput.ReadToEnd() |> ignore - p.StandardError.ReadToEnd() |> ignore Log.info $"Stopped process %s{p.ProcessName}" | Error msg -> Log.warn msg)