C# 等待进程不再运行或超时结束,以先发生的为准
如果在X秒后仍在运行,我想使用taskkill终止计算机上运行的进程(windows服务已停止,但进程消失需要时间) 在C#(.NET2.0或可能是3.0)中实现上述功能的最正确方法是什么 我提供了一种实用方法,用于在给定进程名称的情况下验证进程是否仍在运行(使用C# 等待进程不再运行或超时结束,以先发生的为准,c#,.net,timeout,C#,.net,Timeout,如果在X秒后仍在运行,我想使用taskkill终止计算机上运行的进程(windows服务已停止,但进程消失需要时间) 在C#(.NET2.0或可能是3.0)中实现上述功能的最正确方法是什么 我提供了一种实用方法,用于在给定进程名称的情况下验证进程是否仍在运行(使用process.getprocesss())。 (由于进程不是由我的代码生成的,因此我无法使用WaitTillExit来知道它何时不再运行) PS:该进程在远程计算机上运行您可以调用,并通过适当的超时。这样,您就不需要使用自己的检查来查
process.getprocesss()
)。
(由于进程不是由我的代码生成的,因此我无法使用WaitTillExit来知道它何时不再运行)
PS:该进程在远程计算机上运行您可以调用,并通过适当的超时。这样,您就不需要使用自己的检查来查看进程是否仍在运行。事实上,您可以使用process.WaitForExit()
Process p = ...
bool exited = p.WaitForExit(10000); // 10 seconds timeout
只需让流程等待via即可
Process p = Process.GetProcessById(iYourID);
然后打电话
if(!p.WaitForExit(iYourInterval))
{
p.Kill();
}
您还可以通过以下方式通过进程名称获取进程:
Process.GetProcessesByName(strYourProcessName);
如果进程在超时后仍在运行,我不确定这是如何实现“杀死”进程的,不过……我以为您将使用taskkill?
WaitForExit
返回false
,如果进程在超时后仍在运行;用这个来决定是否杀死Itarrgh,现在意识到这个问题的措辞不正确。将立即编辑,请重新查看。酷!现在,如果我可以在远程机器上使用它,这正是所需要的(因为我需要用相同的exe名称杀死一大堆进程),谢谢!不要忘记Kill()
异步执行,并且不会杀死任何子进程(请参阅)。如果您想等待进程实际被终止,请使用p.WaitForExit()
进行后续操作。