基于other questions,我正在使用System.Diagnostics.Process
到Start
和Kill
进程:
this.childProcess.Kill();
this.childProcess.WaitForExit();
this.childProcess.Close();
我认为WaitForExit
处理Kill
命令的异步性质,但是有问题的进程(perl.exe)拒绝死亡。相反,它会持续一段时间。
这段“时间”正在引发竞争状态。无论如何我可以确保这个过程真的死了吗?
答案 0 :(得分:3)
我不确定你的意思是“确保这个过程真的死了。”在引擎盖下,Kill
方法最终调用TerminateProcess,这是杀死进程的最有效方法,WaitForExit
在进程实际消失之前不会返回。
Kill
方法可能无法在至少两种情况下实际终止该进程
这些中的任何一个是否适用于您的方案?