如何检查进程是否空闲? C#

时间:2010-05-06 22:13:43

标签: c# process

正如标题所说。

我正在寻找一种方法来检查进程是否处于空闲状态,是否有明显的运行且未运行但是如何确定它是否正在执行任何操作?

由于

2 个答案:

答案 0 :(得分:3)

这取决于你如何定义空闲。

但是,您可以创建某种启发式方法,使用Process类将进程定义为空闲。如果一个进程在一段时间内没有消耗超过 thresholdMillis ,我会认为该进程是“空闲的”

Process p = Process.GetProcessById(proc_id);
TimeSpan begin_cpu_time = p.TotalProcessorTime;
//... wait a while
p.Refresh();
TimeSpan end_cpu_time = p.TotalProcessorTime;
if(end_cpu_time - begin_cpu_time < TimeSpan.FromMillis(thresholdMillis))
{
    //..process is idle
}
else
{
    //..process is not idle
}

因此,根据您选择threshold_millis值的方式,您将得到不同的结果。但这对于查看进程是否空闲应该是一个不错的启发式方法。

理想情况下,您可能会使用某种计时器来定期查询和更新流程的“空闲”。

答案 1 :(得分:0)

您是否在寻找GetLastInputInfo之类的内容?