当主应用程序使用F#退出时,RedirectStandardOutput

问题描述

| 假设以下代码
let sw = new StreamWriter(\"out.txt\",false)
sw.AutoFlush <- true

let proc = new Process()
proc.StartInfo.FileName <- path
proc.StartInfo.RedirectStandardOutput <- true
proc.StartInfo.UseShellExecute <- false
proc.OutputDataReceived.Add(fun b -> sw.WriteLine b.Data )
proc.Start() |> ignore
proc.BeginoutputReadLine()
我创建一个流程并退出主应用程序。该进程仍在运行(应有的状态),但它停止重定向标准输出。有什么方法即使在主应用程序退出后仍如何继续将标准输出写入文件? PS:我必须退出主应用程序,无法等待过程完成 PPS:我想对标准错误输出做类似的事情     

解决方法

        我认为,如果
RedirectStandardOutput
为假,DESCO的答案可能会起作用。进程退出后,不会将输出写入文件,因为
OutputDataReceived
事件处理程序不再存在。如果可能的话,我建议将输出文件路径传递给您的程序(假设没有路径意味着写入标准输出)。有了适当的设置,就可以轻松地完成您要尝试执行的操作。     ,        通过使用适当的命令行启动过程来执行重定向:将stdout和stderr重定向到dos中的单个文件?