Как проверить, простаивает ли процесс? C # - PullRequest
0 голосов
/ 07 мая 2010

Как следует из названия.

Я ищу способ проверить, не запущен ли процесс, есть ли очевидный процесс, который запущен и не запущен, но как определить, что он ничего не делает?

Спасибо

Ответы [ 2 ]

3 голосов
/ 07 мая 2010

это зависит от того, как вы определяете холостой ход.

Однако вы могли бы создать какую-то эвристику для определения процесса как бездействующего с использованием класса 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, вы получите разные результаты. но это должно быть неплохой эвристикой, чтобы увидеть, если процесс простаивает.

В идеале вы, вероятно, использовали бы какой-либо таймер для периодического запроса и обновления «бездействия» процесса.

0 голосов
/ 07 мая 2010

Вы ищете что-то вроде GetLastInputInfo ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...