gpt4 book ai didi

c# - 执行流程链

转载 作者:行者123 更新时间:2023-11-30 12:52:12 25 4
gpt4 key购买 nike

  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) 并且仅在我关闭计算器代码继续。我需要两个计算器一起工作。你知道怎么做吗?

最佳答案

ReadLine 正在读取第一个计算的输出。 Calc 不发送任何输出。因此,ReadLine 将永远不会返回,因此下一个计算将不会开始。当第一个计算终止时,ReadLine 无法再从第一个计算中读取,因此返回 null。返回后,代码可以开始第二次计算。

您可以不从第一个计算中读取,也可以异步读取。您可能想引用 Async ReadLine如何 异步读取。

您也可以在开始调用 ReadLine 之前使用 p2 开始第二次计算。

关于c# - 执行流程链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com