我正在使用以下代码开始一个新流程:
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 (Process must exit before requested information can be determined...).
知道为什么我会收到此异常吗?
谢谢。
最佳答案
根据 MSDN , "Kill
方法异步执行,调用Kill
方法后,调用WaitForExit
方法等待进程退出,或者检查HasExited
属性来判断进程是否已经退出。”
换句话说,仅仅因为 Kill
返回并不意味着该进程实际上已经消失。您需要调用 WaitForExit
以等待进程真正消失。
关于c# - InvalidOperationException 与进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17996175/