一个过程就是拒绝死亡

时间:2010-09-20 21:54:20

标签: c# kill

基于other questions,我正在使用System.Diagnostics.ProcessStartKill进程:

this.childProcess.Kill();
this.childProcess.WaitForExit();
this.childProcess.Close();

我认为WaitForExit处理Kill命令的异步性质,但是有问题的进程(perl.exe)拒绝死亡。相反,它会持续一段时间。

这段“时间”正在引发竞争状态。无论如何我可以确保这个过程真的死了吗?

1 个答案:

答案 0 :(得分:3)

我不确定你的意思是“确保这个过程真的死了。”在引擎盖下,Kill方法最终调用TerminateProcess,这是杀死进程的最有效方法,WaitForExit在进程实际消失之前不会返回。

Kill方法可能无法在至少两种情况下实际终止该进程

  1. 您没有足够的权利来终止该进程
  2. 有一个调试器附加到进程(我相信这可以防止TerminateProcess工作)。
  3. 不间断的I / O操作(感谢Daniel)
  4. 这些中的任何一个是否适用于您的方案?