Возможный дубликат:
Использование ЦП с использованием WMI и C#
Как получить процент использования ЦП в С# (.NET) с помощью WMI? Да без всяких дурацких PerformanceCounter.
Возможный дубликат:
Использование ЦП с использованием WMI и C#
Как получить процент использования ЦП в С# (.NET) с помощью WMI? Да без всяких дурацких PerformanceCounter.
PerformanceCounter — это очень недорогой способ получения этой информации. В отличие от WMI, который предоставит вам точную ту же информацию, но с большими накладными расходами, поскольку он работает поверх COM.
И у него та же проблема, что и у ПК, поэтому, я думаю, вы считаете его «глупым». Процент использования ЦП измеряется за интервал. Фактическое использование ЦП равно 0 или 100%, ЦП никогда не работает намеренно с более низкой скоростью. Он запускает код на полную мощность, когда есть поток, которому нужно поработать. Если нет работы, нормальное состояние вашего настольного компьютера, то ЦП выключается с помощью инструкции HLT. Он снова просыпается с прерыванием часов.
Процент использования ЦП, показанный в TaskMgr или Permon, является расчетным значением за одну секунду. Отношение количества времени, в течение которого он работал на 100 %, к количеству времени, в течение которого он был выключен. Длина интервала очень важна. Чем короче вы сделаете это, тем «прыгучее» будет вычисленное значение. Вплоть до вызова NextValue() дважды подряд вы всегда получите 100%.
Короче говоря, вам нужен таймер. Сделайте одну секунду, чтобы эмулировать то, что вы видите в PerfMon и TaskMgr.