我想使用taskkill杀死在机器上运行的进程,如果它们在X秒后仍在运行(Windows服务已停止但进程耗尽需要时间) 在C#(.net 2.0或可能是3.0)中完成上述操作的最正确方法是什么?
我有一个实用程序方法,用于在给定进程名称(使用Process.GetProcesses()
)的情况下验证进程是否仍在运行。
(由于我的代码没有生成该过程,我无法使用WaitTillExit知道它何时不再运行)
PS:进程在远程计算机上运行
答案 0 :(得分:38)
实际上,您可以使用Process.WaitForExit()。
只需通过
等待进程Process p = Process.GetProcessById(iYourID);
然后致电
if(!p.WaitForExit(iYourInterval))
{
p.Kill();
}
您也可以通过
的名称获取流程Process.GetProcessesByName(strYourProcessName);
答案 1 :(得分:11)
你可以调用Process.WaitForExit
,传递适当的超时。这样您就不需要使用自己的检查来查看进程是否仍在运行。
答案 2 :(得分:10)
Process p = ...
bool exited = p.WaitForExit(10000); // 10 seconds timeout