【发布时间】:2020-05-11 11:01:48
【问题描述】:
我正在尝试执行一个批处理脚本,该脚本末尾包含我要确认的暂停语句:
var psi = new ProcessStartInfo(path, arguments);
psi.RedirectStandardInput = true;
psi.UseShellExecute = false;
psi.WorkingDirectory = workDir;
var p = Process.Start(psi);
p.StandardInput.WriteLine();
p.WaitForExit();
但是,尽管该过程已经完成,但此代码在 WaitForExit 中永远挂起。我知道重定向标准输出/错误时必须读取缓冲区。重定向标准输入有什么特别之处吗?
【问题讨论】:
-
试试read input?
-
您是否关闭了
StandardInput流? -
你应该有相反的问题,因为
StandardInput.WriteLine()确认 不止一次暂停。除非你设置AutoFlush= false。该批处理文件中是否只有pause或其他内容?它是批处理(.bat、.cmd)还是不同类型的脚本?通过这些设置,您应该会在 VS 输出窗口中看到进程输出... -
@PavelAnikhouski:是的,我忘了关闭 StandardInput!谢谢,已解决。您可以将您的评论表述为答案,然后我可以将其标记为已接受。