Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método PerformanceCounterCategory.GetCounters ()

 

Publicado: octubre de 2016

Recupera una lista de los contadores de una categoría de contador de rendimiento que contiene exactamente una instancia.

Espacio de nombres:   System.Diagnostics
Ensamblado:  System (en System.dll)

public PerformanceCounter[] GetCounters()

Valor devuelto

Type: System.Diagnostics.PerformanceCounter[]

Una matriz de PerformanceCounter que indica los contadores que están asociados a esta categoría de contador de rendimiento de la instancia única de objetos.

Exception Condition
ArgumentException

La categoría no es una instancia única.

Win32Exception

Error en una llamada a una API del sistema subyacente.

InvalidOperationException

La categoría no tiene una instancia asociada.

UnauthorizedAccessException

Código que se ejecuta sin privilegios administrativos intentó leer un contador de rendimiento.

Para obtener más información sobre las instancias de objeto de rendimiento, consulte el PerformanceCounter general sobre la clase.

System_CAPS_noteNota

Para leer los contadores de rendimiento en Windows Vista y versiones posteriores, Windows XP Professional x64 Edition o Windows Server 2003, debe ser miembro del grupo usuarios del Monitor de rendimiento o tener privilegios administrativos.

Para evitar tener que elevar sus privilegios para tener acceso a los contadores de rendimiento en Windows Vista y versiones posteriores, agréguese al grupo usuarios del Monitor de rendimiento.

En Windows Vista y versiones posteriores, el Control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Para ejecutar el código que tiene acceso a los contadores de rendimiento, primero debe elevar sus privilegios de usuario estándar a administrador. Para ello, inicie una aplicación haciendo clic con el botón derecho en el icono de la aplicación e indique que desea ejecutarla como administrador.

En el ejemplo de código siguiente se obtiene una lista de los PerformanceCounter objetos en un PerformanceCounterCategory. Primero, se crea un PerformanceCounterCategory con el constructor adecuado, basándose en si se ha especificado un nombre de equipo. A continuación, utiliza el GetCounters para devolver una matriz de PerformanceCounter objetos, seleccionar la GetCounters sobrecarga basándose en si se ha especificado un nombre de instancia.

Esto GetCounters() se produce un error en la sobrecarga, a menos que se utiliza con una categoría de instancia única.

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);
        }
    }
}

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: