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) определяет привилегии пользователя. Если вы являетесь членом встроенной группы "Администраторы", вы назначаете два маркера доступа во время выполнения: маркер доступа стандартного пользователя и маркер доступа администратора. По умолчанию вы находитесь в стандартной роли пользователя. Чтобы выполнить код, который обращается к счетчикам производительности, необходимо сначала повысить привилегии от стандартного пользователя к администратору. Это можно сделать при запуске приложения, щелкнув правой кнопкой мыши значок приложения и указав, что вы хотите запустить от имени администратора.

См. также раздел

Применяется к