Пошаговое руководство. Изменение и получение значений счетчика производительности
Обновлен: Ноябрь 2007
В процедурах данного пошагового руководства демонстрируется порядок работы со значениями счетчиков производительности с помощью методов класса PerformanceCounter. С помощью счетчиков производительности в Windows производится сбор сведений о производительности различных системных ресурсов. В Windows можно работать с рядом предопределенных счетчиков, сгруппированных в категории. Получаемые от счетчика производительности значения делятся на необработанные значения и вычисляемые значения; последние могут изменяться с течением времени. Существует несколько способов увеличения и уменьшения текущего значения счетчика.
В этом пошаговом руководстве производится:
Создание и настройка компонента PerformanceCounter, предназначенного для взаимодействия с системным счетчиком.
Создание приложения Windows, содержащего элементы пользовательского интерфейса, считывающие значения со счетчика и отображающие их.
Создание кода записи и считывания необработанного значения счетчика с помощью свойства RawValue.
Создание кода, в котором для изменения значения счетчика и считывания его нового значения используются методы Increment, IncrementBy и M:System.Diagnostics.PerformanceCounter.Decrement.
![]() |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Создание приложения Windows
В меню Файл откройте команду Создать и выберите Проект.
В диалоговом окне Новый проект создайте Приложение Windows на языке Visual Basic или Visual C#. Назовите проект PerformanceCounterExample.
Добавьте в приложение следующие элементы управления со вкладки Windows Formsпанели элементов:
Две метки;
Одно текстовое поле;
Пять кнопок.
Задайте следующие свойства элементов управления:
Элемент управления
Свойство
Значение
Label1
Name
lblCounterValue
Text
(пусто)
Label2
Name
lblSystemCounterValue
Text
(пусто)
Textbox1
Name
txtValue
Text
(пусто)
Button1
Name
btnSetRawValue
Text
Задать необработанное значение пользовательского счетчика
Button2
Name
btnGetNextValue
Text
Получить следующее значение системного счетчика
Button3
Name
btnIncrement
Text
Увеличить значение пользовательского счетчика на 1
Button4
Name
btnDecrement
Text
Уменьшить значение пользовательского счетчика на 1
Button5
Name
btnIncrementBy
Text
Увеличить значение пользовательского счетчика
Расположите элементы управления в произвольном порядке.
Сохраните результаты работы.
Создание и настройка компонента PerformanceCounter
Откройте обозреватель серверов и выберите узел Серверы. Дополнительные сведения см. в разделе Практическое руководство. Подключение и инициализация обозревателя серверов/обозревателя баз данных.
В узле Серверы найдите узел, соответствующий текущему компьютеру, и раскройте его. Будут отображены сведения о счетчиках производительности, очередях сообщений, журналах событий и службах.
Раскройте узел Счетчики производительности и найдите узел Процессор.
Найдите узел % загруженности процессора и раскройте его.
Перетащите в форму счетчик _Total. В проект будет добавлен компонент PerformanceCounter, настроенный на использование счетчика _Total. Компонент называется PerformanceCounter1 в Visual Basic и performanceCounter1 — в Visual C#.
Считывание необработанного значения системного счетчика
Для создания обработчика события Click дважды щелкните в конструкторе кнопку Получить следующее значение системного счетчика. Этот метод будет возвращать вычисляемое, а не необработанное значение счетчика. Для считывания и отображения следующего значения счетчика, отслеживаемого экземпляром PerformanceCounter, добавьте следующий код:
Private Sub btnGetNextValue_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnGetNextValue.Click lblSystemCounterValue.Text = _ "The current value of the system counter is: " _ & PerformanceCounter1.NextValue().ToString() End Sub
private void btnGetNextValue_Click(object sender, System.EventArgs e) { lblSystemCounterValue.Text = "The current value of the system counter is: " + performanceCounter1.NextValue().ToString(); }
В дальнейших процедурах рассматривается работа с пользовательскими категориями и счетчиками.
Создание пользовательского счетчика и категории
В меню Вид выберите пункт Конструктор, чтобы открыть конструктор формы Form1.
Откройте в конструкторе обозреватель серверов и выберите узел Серверы. Дополнительные сведения см. в разделе Практическое руководство. Подключение и инициализация обозревателя серверов/обозревателя баз данных.
В узле Серверы найдите узел, соответствующий текущему компьютеру, и раскройте его.
Щелкните правой кнопкой мыши узел Счетчики производительности и выберите команду Создать новую категорию.
Откроется диалоговое окно Построитель счетчиков производительности.
В поле Имя категории введите MyNewCategory.
Для добавления нового счетчика выберите Создать и дайте счетчику имя MyNewCounter. Нажмите ОК, чтобы создать новую категорию и новый счетчик.
Примечание.
На этом этапе необходимо разрешение на запись в реестр. Если создание нового счетчика невозможно, обратитесь к системному администратору.
В обозревателе серверов перейдите к новому счетчику и перетащите его на форму. В проект будет добавлен новый компонент PerformanceCounter, настроенный для работы с новым счетчиком MyNewCounter.
Примечание.
После выполнения этих шагов на компьютере будет создан счетчик. Если бы это приложение развертывалось, то счетчик следовало бы создать на том компьютере, где осуществляется развертывание. Это можно сделать, добавив к проекту установщик. Выберите объект PerformanceCounter и выберите в окне Свойства команду Добавить установщик. Если эта команда недоступна, щелкните правой кнопкой мыши окно Свойства и выберите пункт Команды. Дополнительные сведения см. в разделе Знакомство с компонентами установки.
Задание необработанного значения пользовательского счетчика
Выберите в конструкторе PerformanceCounter2 (в Visual Basic) или performanceCounter2 (в Visual C#).
Задайте свойству ReadOnly значение false.
Дважды щелкните кнопку btnSetRawValue, чтобы создать в редакторе кода обработчик события Click.
Добавьте следующий код, чтобы установить необработанное значение созданного счетчика и вывести его значение в тексте первой из меток:
Private Sub btnSetRawValue_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSetRawValue.Click PerformanceCounter2.RawValue = CLng(txtValue.Text) lblCounterValue.Text = PerformanceCounter2.NextValue().ToString() End Sub
private void btnSetRawValue_Click(object sender, System.EventArgs e) { performanceCounter2.RawValue = long.Parse(txtValue.Text); lblCounterValue.Text = performanceCounter2.NextValue().ToString();
}
Увеличение значения пользовательского счетчика на единицу и его отображение
Дважды щелкните в конструкторе кнопку Увеличить значение пользовательского счетчика на 1, чтобы создать в редакторе кода обработчик события Click.
Добавьте следующий код, чтобы увеличить пользовательский счетчик на единицу и вывести его значение в тексте первой из меток:
Private Sub btnIncrement_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnIncrement.Click PerformanceCounter2.Increment() lblCounterValue.Text = PerformanceCounter2.NextValue().ToString() End Sub
private void btnIncrement_Click(object sender, System.EventArgs e) { performanceCounter2.Increment(); lblCounterValue.Text = performanceCounter2.NextValue().ToString();
}
Уменьшение значения пользовательского счетчика и его отображение
Дважды щелкните в конструкторе кнопку Уменьшить значение пользовательского счетчика на 1, чтобы создать в редакторе кода обработчик события Click.
Добавьте следующий код, чтобы уменьшить значение счетчика на единицу и вывести его в тексте первой из меток:
Private Sub btnDecrement_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnDecrement.Click PerformanceCounter2.Decrement() lblCounterValue.Text = PerformanceCounter2.NextValue().ToString() End Sub
private void btnDecrement_Click(object sender, System.EventArgs e) { performanceCounter2.Decrement(); lblCounterValue.Text = performanceCounter2.NextValue().ToString();
}
Увеличение значения пользовательского счетчика на заданную пользователем величину
Дважды щелкните в конструкторе кнопку Увеличить значение пользовательского счетчика, чтобы создать в редакторе кода обработчик события Click.
Добавьте следующий код, чтобы увеличить значение счетчика на величину, введенную в текстовом поле, и вывести значение счетчика в тексте первой из меток:
Private Sub btnIncrementBy_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnIncrementBy.Click PerformanceCounter2.IncrementBy(CLng(txtValue.Text)) lblCounterValue.Text = PerformanceCounter2.NextValue().ToString() End Sub
private void btnIncrementBy_Click(object sender, System.EventArgs e) { performanceCounter2.IncrementBy(long.Parse(txtValue.Text)); lblCounterValue.Text = performanceCounter2.NextValue().ToString(); }
Тестирование приложения
Сохраните файлы.
Нажмите клавишу F5, чтобы скомпилировать и запустить приложение.
Для получения текущего значения счетчика категории "Процессор" нажмите кнопку Получить следующее значение системного счетчика. Поскольку считывание значения производится с помощью метода NextValue(), при первом вызове будет возвращено нулевое значение.
Текущее значение счетчика должно появиться в тексте метки.
Введите в текстовом поле значение 25 и нажмите кнопку Задать необработанное значение пользовательского счетчика.
Текст метки должен обновиться, отразив тот факт, что необработанное значение теперь равно 25.
Нажмите кнопку Увеличить значение пользовательского счетчика на 1.
Значение в тексте метки должно увеличиться на 1.
Нажмите кнопку Уменьшить значение пользовательского счетчика на 1.
Значение в тексте метки должно уменьшиться на 1.
Введите в текстовом поле значение 25 и нажмите кнопку Увеличить значение пользовательского счетчика.
Значение в тексте метки должно увеличиться на 25.
Кроме того, счетчик производительности можно просматривать с помощью средства Windows "Производительность".
Просмотр значения счетчика производительности с помощью средства Windows "Производительность"
Откройте оснастку Производительность, входящую в состав консоли управления (MMC). Обратитесь к справке операционной системы, чтобы узнать, как открыть оснастку Производительность.
Щелкните правой кнопкой мыши список счетчиков, расположенный под графиком производительности, и выберите команду Добавить счетчики.
В списке Объект выберите MyNewCategory, а в списке счетчиков — MyNewCounter. В завершение нажмите Добавить.
Для отображения значения счетчика нажмите на панели инструментов кнопку Просмотр отчета.
См. также
Основные понятия
Знакомство со способами выявления пороговых значений производительности