2010-05-06 5 views

Répondre

3

Cela dépend de la façon dont vous définissez le mode veille. Toutefois, vous pouvez créer une sorte d'heuristique pour définir un processus comme inactif à l'aide de la classe Process. Je suppose qu'un processus est « inactif » si elle n'a pas consommé plus de thresholdMillis sur une certaine période de temps

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 
} 

donc en fonction de la façon dont vous choisissez votre threshold_millis valeur que vous obtiendrez des résultats différents. mais cela devrait être une heuristique décente pour voir si un processus est inactif.

Idéalement, vous utiliseriez probablement une sorte de minuterie pour interroger et mettre à jour périodiquement l'inactivité d'un processus.

+0

Juste l'idée que je cherchais. Merci –

Questions connexes