等到进程不再运行或直到超时,以先发生者为准

我想使用taskkill杀死在机器上运行的进程,如果它们在X秒后仍在运行(Windows服务已停止,但进程耗尽需要时间)在C#(.net)中完成上述操作的最正确方法是什么2.0或可能3.0)?

我给出了进程名称(使用Process.GetProcesses() )来validation进程是否仍在运行的实用程序方法。 (由于我的代码没有生成过程,我无法使用WaitTillExit知道它何时不再运行)

PS:该进程在远程计算机上运行

实际上,您可以使用Process.WaitForExit()。

只需让流程等待通过

 Process p = Process.GetProcessById(iYourID); 

然后打电话

 if(!p.WaitForExit(iYourInterval)) { p.Kill(); } 

您也可以通过他们的名字获取流程

 Process.GetProcessesByName(strYourProcessName); 

您可以调用Process.WaitForExit ,传递适当的超时。 这样您就不需要使用自己的检查来查看进程是否仍在运行。

 Process p = ... bool exited = p.WaitForExit(10000); // 10 seconds timeout