asynchronously read processes' stdout/err. seems to fix issue with running edomh. possibly related to #90

This commit is contained in:
Chris
2025-01-06 18:00:27 -07:00
parent d7e3e01c73
commit d50b0f86bf

View File

@ -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)