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.CounterExists (String)

 

Publicado: octubre de 2016

Determina si el contador especificado está registrado en esta categoría, que se indica mediante el CategoryName y MachineName Propiedades.

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

public bool CounterExists(
	string counterName
)

Parámetros

counterName
Type: System.String

El nombre del contador de rendimiento para buscar.

Valor devuelto

Type: System.Boolean

true Si el contador está registrado en la categoría especificada por el CategoryName y MachineName Propiedades; en caso contrario, false.

Exception Condition
ArgumentNullException

El valor de counterName es null.

InvalidOperationException

El CategoryName no se estableció la propiedad.

Win32Exception

Error en una llamada a una API del sistema subyacente.

UnauthorizedAccessException

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

Debe establecer el CategoryName propiedad antes de llamar a este método. De lo contrario, se inicia una excepción.

Si no ha configurado el MachineName propiedad, este método utiliza el equipo local (".").

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 determina si un PerformanceCounter existe. Obtiene un nombre de categoría, el nombre de contador y el nombre del equipo desde la línea de comandos, si se han proporcionado. Crea un PerformanceCounterCategory objeto mediante el correspondiente PerformanceCounterCategory. A continuación, utiliza el CounterExists(String) método para determinar si especificado PerformanceCounter existe e informa al usuario.

public static void Main(string[] args)
{
    string categoryName = "";
    string counterName = "";
    string machineName = "";
    bool objectExists = false;
    PerformanceCounterCategory pcc;

    // Copy the supplied arguments into the local variables.
    try
    {
        categoryName = args[0];
        counterName = args[1];
        machineName = (args[2]=="."? "": args[2]);
    }
    catch(Exception ex)
    {
        // Ignore the exception from non-supplied arguments.
    }

    try
    {
        if (machineName.Length==0)
        {
            pcc = new PerformanceCounterCategory(categoryName);
        }
        else
        {
            pcc = new PerformanceCounterCategory(categoryName, machineName);
        }

        // Check whether the specified counter exists.
        // Use the per-instance overload of CounterExists.
        objectExists = pcc.CounterExists(counterName);

    }
    catch(Exception ex)
    {
        Console.WriteLine("Unable to check for the existence of " +
            "counter \"{0}\" in category \"{1}\" on "+
            (machineName.Length>0? "computer \"{2}\".": "this computer.")+ "\n" + 
            ex.Message, counterName, categoryName, machineName);
        return;
    }

    // Tell the user whether the counter exists.
    Console.WriteLine("Counter \"{0}\" " + (objectExists? "exists": "does not exist") + 
        " in category \"{1}\" on " + (machineName.Length>0? "computer \"{2}\".": "this computer."), 
        counterName, pcc.CategoryName, pcc.MachineName);
}

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: