为什么这段代码只显示cmd窗口而从未到达末尾?我想把PsList的输出放到我的C#应用程序中。执行在以下行停止:"int exitCode=proc.exitCode;"
private static void PsList()
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = @"C:PsList.exe";
start.WindowStyle = ProcessWindowStyle.Hidden;
start.CreateNoWindow = true;
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using (Process proc = Process.Start(start))
{
proc.WaitForExit(4000);
int exitCode = proc.ExitCode;
string exitMsg = proc.StandardOutput.ReadToEnd();
}
}
您可以尝试重新排列一下:
using (Process proc = Process.Start(start))
{
string exitMsg = proc.StandardOutput.ReadToEnd();
proc.WaitForExit(4000);
int exitCode = proc.ExitCode;
}
有许多相关的问题,例如如何从Process获取日志。重定向输出时启动和ResGen.exe停滞
取决于执行在proc上的停止方式。ExitCode行,可能是在访问ExitCode属性时进程尚未完成,然后它将抛出InvalidOperationException。
在这种情况下,您可以检查进程是否已经使用proc退出。在尝试访问ExitCode属性之前已退出