执行流程链
public void ExecuteProcessChain(string[] asProcesses, string sInRedirect, string sOutRedirect)
{
Process p1 = new Process();
p1.StartInfo.UseShellExecute = false;
p1.StartInfo.RedirectStandardOutput = true;
p1.StartInfo.FileName = asProcesses[0];
p1.Start();
StreamReader sr = p1.StandardOutput;
string s, xxx = "";
while ((s = sr.ReadLine()) != null)
Console.WriteLine("sdfdsfs");
//xxx += s+"n";
p1.StartInfo.RedirectStandardInput = true;
p1.StartInfo.RedirectStandardOutput = false;
p1.StartInfo.FileName = asProcesses[1];
p1.Start();
StreamWriter sw = p1.StandardInput;
sw.Write(xxx);
sw.Close();
sr.Close();
}
我正在尝试执行“calc | calc”,但是当我这样做时,它会卡在while ((s = sr.ReadLine()) != null)
行,并且只有在我关闭计算器之后代码才会继续。我需要两个计算器一起工作。你知道怎么做吗?
没有找到相关结果
已邀请:
2 个回复
体悉
正在读取第一个计算的输出。 Calc不发送任何输出。因此,
永远不会返回,因此下一个计算将不会开始。当第一个计算终止时,
不能再从第一个计算中读取,因此返回null。返回后,代码可以启动第二个计算。 您可以不读取第一个calc或异步读取。 您可能想要参考Async ReadLine的方法 异步读取。 你可以在开始调用
之前用p2开始第二次计算。
禽兢玫坞劲