Чтобы создать приложение, которое будет отслеживать загрузку процессора и количество доступной оперативной памяти требуется всего несколько минут. Разработчики .NET Framework действительно постарались и включили замечательный компонент производительности Windows NT – PerfomanceCounter (продребнее здесь).
Разместим на форме Timer, 2 GroupBox, 3 Label, ProgressBar, 2 PrefomanceCounter (см. рис. 1)
Теперь выставим необходимые свойства наших элементов.
Таймер:
Interval – 1000
Enable – true
ProgressBar:
MinimumValue – 0
MaximumValue – 100
Step – 1
Label я назвал как на рисунке (других настроек не нужно). GroupBox можете называть как хотите.
Тепер перейдем к настройке PrefomanceCounter. Один из компонентов будем использовать для получения значения загрузки процессора (рис. 2), второй – количество доступной оперативной памяти в килобайтах (рис. 3).
Выберите свойтво 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 которое позволяет получать значения не только с локальной машины, но и с удаленного компьютера.
[download id=”4″]
Отличная статья! Все доступно и понятно разобрано. Спасибо!
Необработанное исключение типа “System.ArgumentOutOfRangeException” в System.Windows.Forms.dll
Дополнительные сведения: Значение ‘1547372’ недопустимо для ‘Value’. ‘Value’ должно лежать в диапазоне от ‘minimum’ до ‘maximum’.
Обьяснил…