PerformanceCounterCategory.GetCounters Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Извлекает список счетчиков в этой категории счетчиков производительности.
Перегрузки
| Имя | Описание |
|---|---|
| GetCounters() |
Извлекает список счетчиков в категории счетчиков производительности, содержащей ровно один экземпляр. |
| GetCounters(String) |
Извлекает список счетчиков в категории счетчиков производительности, содержащей один или несколько экземпляров. |
GetCounters()
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
Извлекает список счетчиков в категории счетчиков производительности, содержащей ровно один экземпляр.
public:
cli::array <System::Diagnostics::PerformanceCounter ^> ^ GetCounters();
public System.Diagnostics.PerformanceCounter[] GetCounters();
member this.GetCounters : unit -> System.Diagnostics.PerformanceCounter[]
Public Function GetCounters () As PerformanceCounter()
Возвращаемое значение
Массив объектов, указывающих счетчики, связанные с этой категорией счетчиков PerformanceCounter производительности одного экземпляра.
Исключения
Категория не является одним экземпляром.
Сбой вызова базового системного API.
Категория не имеет связанного экземпляра.
Код, выполняющийся без прав администратора, пытался прочитать счетчик производительности.
Примеры
В следующем примере кода возвращается список PerformanceCounter объектов в объекте PerformanceCounterCategory. Сначала он создает соответствующий PerformanceCounterCategory конструктор на основе того, было ли указано имя компьютера. Затем он использует GetCounters метод для возврата массива PerformanceCounter объектов, выбрав GetCounters перегрузку на основе того, было ли указано имя экземпляра.
Эта GetCounters() перегрузка завершается ошибкой, если она не используется с категорией одного экземпляра.
public static void Main(string[] args)
{
string categoryName = "";
string machineName = "";
string instanceName = "";
PerformanceCounterCategory pcc;
PerformanceCounter[] counters;
// Copy the supplied arguments into the local variables.
try
{
categoryName = args[0];
machineName = args[1]=="."? "": args[1];
instanceName = args[2];
}
catch
{
// Ignore the exception from non-supplied arguments.
}
try
{
// Create the appropriate PerformanceCounterCategory object.
if (machineName.Length>0)
{
pcc = new PerformanceCounterCategory(categoryName, machineName);
}
else
{
pcc = new PerformanceCounterCategory(categoryName);
}
// Get the counters for this instance or a single instance
// of the selected category.
if (instanceName.Length>0)
{
counters = pcc.GetCounters(instanceName);
}
else
{
counters = pcc.GetCounters();
}
}
catch(Exception ex)
{
Console.WriteLine("Unable to get counter information for " +
(instanceName.Length>0? "instance \"{2}\" in ": "single-instance ") +
"category \"{0}\" on " + (machineName.Length>0? "computer \"{1}\":": "this computer:"),
categoryName, machineName, instanceName);
Console.WriteLine(ex.Message);
return;
}
// Display the counter names if GetCounters was successful.
if (counters!=null)
{
Console.WriteLine("These counters exist in " +
(instanceName.Length>0? "instance \"{1}\" of": "single instance") +
" category {0} on " + (machineName.Length>0? "computer \"{2}\":": "this computer:"),
categoryName, instanceName, machineName);
// Display a numbered list of the counter names.
int objX;
for(objX=0; objX<counters.Length; objX++)
{
Console.WriteLine("{0,4} - {1}", objX+1, counters[objX].CounterName);
}
}
}
Sub Main(ByVal args() As String)
Dim categoryName As String = ""
Dim machineName As String = ""
Dim instanceName As String = ""
Dim pcc As PerformanceCounterCategory
Dim counters() As PerformanceCounter
' Copy the supplied arguments into the local variables.
Try
categoryName = args(0)
machineName = IIf(args(1) = ".", "", args(1))
instanceName = args(2)
Catch ex As Exception
' Ignore the exception from non-supplied arguments.
End Try
Try
' Create the appropriate PerformanceCounterCategory object.
If machineName.Length > 0 Then
pcc = New PerformanceCounterCategory(categoryName, machineName)
Else
pcc = New PerformanceCounterCategory(categoryName)
End If
' Get the counters for this instance or a single instance
' of the selected category.
If instanceName.Length > 0 Then
counters = pcc.GetCounters(instanceName)
Else
counters = pcc.GetCounters()
End If
Catch ex As Exception
Console.WriteLine("Unable to get counter information for " & _
IIf(instanceName.Length > 0, "instance ""{2}"" in ", _
"single-instance ") & "category ""{0}"" on " & _
IIf(machineName.Length > 0, "computer ""{1}"":", _
"this computer:"), _
categoryName, machineName, instanceName)
Console.WriteLine(ex.Message)
Return
End Try
' Display the counter names if GetCounters was successful.
If Not counters Is Nothing Then
Console.WriteLine("These counters exist in " & _
IIf(instanceName.Length > 0, "instance ""{1}"" of", _
"single instance") & " category {0} on " & _
IIf(machineName.Length > 0, _
"computer ""{2}"":", "this computer:"), _
categoryName, instanceName, machineName)
' Display a numbered list of the counter names.
Dim objX As Integer
For objX = 0 To counters.Length - 1
Console.WriteLine("{0,4} - {1}", objX + 1, _
counters(objX).CounterName)
Next objX
End If
End Sub
Комментарии
Дополнительные сведения об экземплярах объектов производительности см. в обзоре PerformanceCounter класса.
Note
Чтобы считывать счетчики производительности из сеанса входа в Windows Vista и более поздних версий, Windows XP Professional x64 Edition или Windows Server 2003, необходимо быть членом группы пользователей монитора производительности или иметь права администратора.
Чтобы избежать повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версий, добавьте себя в группу пользователей монитора производительности.
В Windows Vista и более поздних версиях контроль учетных записей (UAC) определяет привилегии пользователя. Если вы являетесь членом встроенной группы "Администраторы", вы назначаете два маркера доступа во время выполнения: маркер доступа стандартного пользователя и маркер доступа администратора. По умолчанию вы находитесь в стандартной роли пользователя. Чтобы выполнить код, который обращается к счетчикам производительности, необходимо сначала повысить привилегии от стандартного пользователя к администратору. Это можно сделать при запуске приложения, щелкнув правой кнопкой мыши значок приложения и указав, что вы хотите запустить от имени администратора.
См. также раздел
Применяется к
GetCounters(String)
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
- Исходный код:
- PerformanceCounterCategory.cs
Извлекает список счетчиков в категории счетчиков производительности, содержащей один или несколько экземпляров.
public:
cli::array <System::Diagnostics::PerformanceCounter ^> ^ GetCounters(System::String ^ instanceName);
public System.Diagnostics.PerformanceCounter[] GetCounters(string instanceName);
member this.GetCounters : string -> System.Diagnostics.PerformanceCounter[]
Public Function GetCounters (instanceName As String) As PerformanceCounter()
Параметры
- instanceName
- String
Экземпляр объекта производительности, для которого требуется получить список связанных счетчиков.
Возвращаемое значение
Массив объектов, указывающих PerformanceCounter счетчики, связанные с указанным экземпляром объекта этой категории счетчиков производительности.
Исключения
Параметр instanceName имеет значение null.
Свойство CategoryName для этого PerformanceCounterCategory экземпляра не задано.
–или–
Категория не содержит экземпляр, указанный параметром instanceName .
Сбой вызова базового системного API.
Код, выполняющийся без прав администратора, пытался прочитать счетчик производительности.
Примеры
В следующем примере кода возвращается список PerformanceCounter объектов в объекте PerformanceCounterCategory. Сначала он создает соответствующий PerformanceCounterCategory конструктор на основе того, было ли указано имя компьютера. Затем он использует GetCounters метод для возврата массива PerformanceCounter объектов, выбрав GetCounters перегрузку на основе того, было ли указано имя экземпляра.
Эта GetCounters(String) перегрузка завершается ошибкой, если она не используется с категорией, содержащей экземпляры.
public static void Main(string[] args)
{
string categoryName = "";
string machineName = "";
string instanceName = "";
PerformanceCounterCategory pcc;
PerformanceCounter[] counters;
// Copy the supplied arguments into the local variables.
try
{
categoryName = args[0];
machineName = args[1]=="."? "": args[1];
instanceName = args[2];
}
catch
{
// Ignore the exception from non-supplied arguments.
}
try
{
// Create the appropriate PerformanceCounterCategory object.
if (machineName.Length>0)
{
pcc = new PerformanceCounterCategory(categoryName, machineName);
}
else
{
pcc = new PerformanceCounterCategory(categoryName);
}
// Get the counters for this instance or a single instance
// of the selected category.
if (instanceName.Length>0)
{
counters = pcc.GetCounters(instanceName);
}
else
{
counters = pcc.GetCounters();
}
}
catch(Exception ex)
{
Console.WriteLine("Unable to get counter information for " +
(instanceName.Length>0? "instance \"{2}\" in ": "single-instance ") +
"category \"{0}\" on " + (machineName.Length>0? "computer \"{1}\":": "this computer:"),
categoryName, machineName, instanceName);
Console.WriteLine(ex.Message);
return;
}
// Display the counter names if GetCounters was successful.
if (counters!=null)
{
Console.WriteLine("These counters exist in " +
(instanceName.Length>0? "instance \"{1}\" of": "single instance") +
" category {0} on " + (machineName.Length>0? "computer \"{2}\":": "this computer:"),
categoryName, instanceName, machineName);
// Display a numbered list of the counter names.
int objX;
for(objX=0; objX<counters.Length; objX++)
{
Console.WriteLine("{0,4} - {1}", objX+1, counters[objX].CounterName);
}
}
}
Sub Main(ByVal args() As String)
Dim categoryName As String = ""
Dim machineName As String = ""
Dim instanceName As String = ""
Dim pcc As PerformanceCounterCategory
Dim counters() As PerformanceCounter
' Copy the supplied arguments into the local variables.
Try
categoryName = args(0)
machineName = IIf(args(1) = ".", "", args(1))
instanceName = args(2)
Catch ex As Exception
' Ignore the exception from non-supplied arguments.
End Try
Try
' Create the appropriate PerformanceCounterCategory object.
If machineName.Length > 0 Then
pcc = New PerformanceCounterCategory(categoryName, machineName)
Else
pcc = New PerformanceCounterCategory(categoryName)
End If
' Get the counters for this instance or a single instance
' of the selected category.
If instanceName.Length > 0 Then
counters = pcc.GetCounters(instanceName)
Else
counters = pcc.GetCounters()
End If
Catch ex As Exception
Console.WriteLine("Unable to get counter information for " & _
IIf(instanceName.Length > 0, "instance ""{2}"" in ", _
"single-instance ") & "category ""{0}"" on " & _
IIf(machineName.Length > 0, "computer ""{1}"":", _
"this computer:"), _
categoryName, machineName, instanceName)
Console.WriteLine(ex.Message)
Return
End Try
' Display the counter names if GetCounters was successful.
If Not counters Is Nothing Then
Console.WriteLine("These counters exist in " & _
IIf(instanceName.Length > 0, "instance ""{1}"" of", _
"single instance") & " category {0} on " & _
IIf(machineName.Length > 0, _
"computer ""{2}"":", "this computer:"), _
categoryName, instanceName, machineName)
' Display a numbered list of the counter names.
Dim objX As Integer
For objX = 0 To counters.Length - 1
Console.WriteLine("{0,4} - {1}", objX + 1, _
counters(objX).CounterName)
Next objX
End If
End Sub
Комментарии
Чтобы представить категорию одного экземпляра, передайте пустую строку ("") для instanceName параметра.
Дополнительные сведения об экземплярах объектов производительности см. в обзоре PerformanceCounter класса.
Note
Чтобы считывать счетчики производительности из сеанса входа в Windows Vista и более поздних версий, Windows XP Professional x64 Edition или Windows Server 2003, необходимо быть членом группы пользователей монитора производительности или иметь права администратора.
Чтобы избежать повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версий, добавьте себя в группу пользователей монитора производительности.
В Windows Vista и более поздних версиях контроль учетных записей (UAC) определяет привилегии пользователя. Если вы являетесь членом встроенной группы "Администраторы", вы назначаете два маркера доступа во время выполнения: маркер доступа стандартного пользователя и маркер доступа администратора. По умолчанию вы находитесь в стандартной роли пользователя. Чтобы выполнить код, который обращается к счетчикам производительности, необходимо сначала повысить привилегии от стандартного пользователя к администратору. Это можно сделать при запуске приложения, щелкнув правой кнопкой мыши значок приложения и указав, что вы хотите запустить от имени администратора.