C# &引用;StandardOut未被重定向或流程尚未';“还没有开始”;在Process.GetProcessById()之后

C# &引用;StandardOut未被重定向或流程尚未';“还没有开始”;在Process.GetProcessById()之后,c#,process,C#,Process,我有一个方法中的代码: int startApp() { ProcessStartInfo proc = new ProcessStartInfo(); proc.FileName = "File.exe"; proc.Arguments = "someArguments"; proc.RedirectStandardInput = false; proc.RedirectStandardOutput = true; proc.UseShellExecute = fals

我有一个方法中的代码:

int startApp()
{
  ProcessStartInfo proc = new ProcessStartInfo();
  proc.FileName = "File.exe";
  proc.Arguments = "someArguments";
  proc.RedirectStandardInput = false;
  proc.RedirectStandardOutput = true;
  proc.UseShellExecute = false;
  proc.CreateNoWindow = true;

  Process p = Process.Start(proc);
  Console.WriteLine(p.StandardOutput.ReadLine()); // Here it works!

  return p.Id;
}
然后,我使用前面方法返回的进程Id运行此代码:

void readText(int processId)
{
  Process p = Process.GetProcessById(processId);
  Console.WriteLine(p.StandardOutput.ReadLine()); // Here does not work!
}
它无法说出
“StandardOut尚未重定向或进程尚未启动”


有人知道为什么我不能从
过程中阅读。StandardOutput

你不能这样做;如果启动了流程,则只能使用标准{Input,Output,Error},甚至只能从启动流程的流程对象使用标准{Input,Output,Error}


安排使用于启动流程的流程对象可用于需要读取标准输出的代码。

您应该从
startApp
返回整个
流程
对象,并在
readText
中使用该对象,而不是通过流程ID重新获取它。