Счетчик производительности процессора

Чтобы создать приложение, которое будет отслеживать загрузку процессора и количество доступной оперативной памяти требуется всего несколько минут. Разработчики .NET Framework действительно постарались и включили замечательный компонент производительности Windows NT – PerfomanceCounter (продребнее здесь).

Разместим на форме Timer, 2 GroupBox, 3 Label, ProgressBar, 2 PrefomanceCounter (см. рис. 1)


Рис. 1 Расположение элементов на форме

Теперь выставим необходимые свойства наших элементов.

Таймер:
Interval1000
Enabletrue

ProgressBar:
MinimumValue0
MaximumValue100
Step1

Label я назвал как на рисунке (других настроек не нужно). GroupBox можете называть как хотите.

Тепер перейдем к настройке PrefomanceCounter. Один из компонентов будем использовать для получения значения загрузки процессора (рис. 2), второй – количество доступной оперативной памяти в килобайтах (рис. 3).


Рис. 2 Настройка PerfomanceCounter


Рис. 3 Настройка PerfomanceCounter

Выберите свойтво CategoryName после чего из списка выберите пункт Процессор (если у вас англ. язык то Processor). Теперь переходим к свойству CounterName. Так как в предыдущем шаге мы выбрали определенную категорию, то здесь нам будет предоставлен список подкатегорий. Выбираем % загруженности процессора (% Processor Time) и установим в свойстве InstanceName значение _Total. Если у вас в системе несколько процессоров, то выберите конкретный интересующий вас процессор.

Теперь перейдем к коду. Весь код будет выполняться в обработчике timer1_Tick:

private void timer1_Tick(object sender, EventArgs e)
{
   //загрузка процессора
   progressBar1.Value = (int)(pcProcessor.NextValue());
   lblProcessor.Text = "Загрузка процессора: " + progressBar1.Value.ToString() + "%";

   //количество доступной оперативной памяти
   lblMemoryAvailable.Text = ((int)pcMemoryAvailable.NextValue()).ToString();
}

Запустив программу, мы увидим текущую загрузку процессора и количество доступной оперативной памяти в КБ. Необходимо сказать, что у элемента PerfomanceCounter есть свойство MachineName которое позволяет получать значения не только с локальной машины, но и с удаленного компьютера.


Рис. 4 Результат выполнения программы

[download id=”4″]

2 Comments

  1. Отличная статья! Все доступно и понятно разобрано. Спасибо!

  2. Необработанное исключение типа “System.ArgumentOutOfRangeException” в System.Windows.Forms.dll

    Дополнительные сведения: Значение ‘1547372’ недопустимо для ‘Value’. ‘Value’ должно лежать в диапазоне от ‘minimum’ до ‘maximum’.

    Обьяснил…

Leave a Reply to LinoinCancel Reply

Your email address will not be published. Required fields are marked *

https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_good.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_negative.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_scratch.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_wacko.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_yahoo.gif 
https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_cool.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_heart.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_rose.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_smile.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_whistle3.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_yes.gif 
https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_cry.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_mail.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_sad.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_unsure.gif  https://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_wink.gif