Я хочу получить общее общее использование процессора для приложения в C #. Я нашел много способов покопаться в свойствах процессов, но мне нужно только использование процессора процессами, а также общий процессор, который вы получаете в TaskManager.
Как я могу это сделать?
Ответы:
Вы можете использовать класс PerformanceCounter из System.Diagnostics .
Инициализируйте так:
Потреблять так:
источник
Чуть больше, чем требовалось, но я использую дополнительный код таймера для отслеживания и оповещения, если загрузка процессора составляет 90% или выше в течение продолжительного периода 1 минута или дольше.
источник
cpuCounter.NextValue
возвращаетfloat
. Так зачем присваивать этоdynamic
? Тогда зачем возвращать этоdynamic
какobject
? Тогда зачем пытаться присвоитьobject
aint
в строкеint cpuPercent = getCPUCounter()
? (Этот код не будет компилироваться.)Потратив некоторое время на чтение нескольких разных тем, которые казались довольно сложными, я придумал это. Я нуждался в этом для 8-ядерного компьютера, где я хотел контролировать сервер SQL. Для кода ниже я перешел в "sqlservr" как appName.
Кажется, он правильно измеряет процент использования ЦП SQL на моем 8-ядерном сервере.
источник
done
на истину? Если я ничего не пропустил, это кажется бесконечной петлей:while(!done){...}
Все нормально, я понял! Спасибо за вашу помощь!
Вот код для этого:
источник
Вы можете использовать WMI для получения процентной информации о процессоре. Вы даже можете войти в удаленный компьютер, если у вас есть правильные разрешения. Посмотрите на http://www.csharphelp.com/archives2/archive334.html, чтобы получить представление о том, что вы можете сделать.
Также полезным может быть ссылка на MSDN для пространства имен Win32_Process .
См. Также пример CodeProject. Как: (почти) все в WMI через C # .
источник
В CMS это правильно, но если вы используете обозреватель серверов в Visual Studio и играете с вкладкой счетчика производительности, вы можете выяснить, как получить множество полезных показателей.
источник
Мне кажется, это работает, пример ожидания, пока процессор не достигнет определенного процента
источник
Этот класс автоматически опрашивает счетчик каждые 1 секунду, а также является потокобезопасным:
источник
System.DateTime
на самом деле это 8-байтовый тип значения, что означает, что присвоенияDateTime
переменной не являются атомарными. Этот код не является потокобезопасным на 32-битных платформах.Мне не нравилось добавлять в 1-й стойле все
PerformanceCounter
решения. Вместо этого я решил использоватьWMI
решение. Причина, по которой существует 1 секунда ожидания / остановки, заключается в том, чтобы показания были точными при использованииPerformanceCounter
. Тем не менее, если вы будете часто вызывать этот метод и обновлять эту информацию, я бы посоветовал не постоянно подвергаться этой задержке ... даже если подумал о выполнении асинхронного процесса для его получения.Я начал с фрагмента здесь. Возвращение загрузки процессора в WMI с использованием C # и добавил полное объяснение решения в своем блоге ниже:
Получить использование ЦП во всех ядрах в C # с помощью WMI
источник
Первоначальная информация в этой ссылке https://gavindraper.com/2011/03/01/retrieving-accurate-cpu-usage-in-c/
источник