带有Process的InvalidOperationException

时间:2013-08-01 13:59:55

标签: c# process invalidoperationexception

我正在使用以下代码开始新流程:

Process p = new Process();
p.StartInfo.FileName = "...";
p.StartInfo.Arguments = "...";
p.Start();
p.WaitForExit(300000); // 5 minutes

if (!p.HasExited) 
    p.Kill();
Console.Write(p.ExitCode);

当过程在5分钟内结束时,这是有效的,但是当它没有时,我得到了

  

InvalidOperationException(进程必须在请求之前退出   信息可以确定......)。

知道为什么我得到这个例外吗?

谢谢。

2 个答案:

答案 0 :(得分:13)

根据MSDN,“Kill方法异步执行。调用Kill方法后,调用WaitForExit方法等待进程退出,或检查HasExited属性以确定进程是否已退出。“

换句话说,仅仅因为Kill返回并不意味着该过程实际上已经消失。您需要致电WaitForExit等待该过程实际消失。

答案 1 :(得分:-1)

只有在进程退出后才能确定进程的某些属性(例如HasExited)。因此错误。

我建议使用try / catch块来发生异常。