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重新获取它。