PerformanceCounterCategory.Exists Método

Definición

Determina si la categoría está registrada en el sistema.

Sobrecargas

Exists(String)

Determina si la categoría está registrada en el equipo local.

Exists(String, String)

Determina si la categoría está registrada en el equipo especificado.

Exists(String)

Determina si la categoría está registrada en el equipo local.

public:
 static bool Exists(System::String ^ categoryName);
public static bool Exists (string categoryName);
static member Exists : string -> bool
Public Shared Function Exists (categoryName As String) As Boolean

Parámetros

categoryName
String

Nombre de la categoría de contador de rendimiento que se va a buscar.

Devoluciones

Es true si la categoría está registrada; de lo contrario, es false.

Excepciones

El parámetro categoryName es null.

El parámetro categoryName es una cadena vacía ("").

Se ha producido un error en la llamada a una API del sistema subyacente.

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

Ejemplos

En el ejemplo de código siguiente se determina si existe un PerformanceCounterCategory objeto denominado "orders". Si no es así, crea el PerformanceCounterCategory objeto mediante un CounterCreationDataCollection objeto que contiene dos contadores de rendimiento.

if (  !PerformanceCounterCategory::Exists( "Orders" ) )
{
   CounterCreationData^ milk = gcnew CounterCreationData;
   milk->CounterName = "milk";
   milk->CounterType = PerformanceCounterType::NumberOfItems32;

   CounterCreationData^ milkPerSecond = gcnew CounterCreationData;
   milkPerSecond->CounterName = "milk orders/second";
   milkPerSecond->CounterType = PerformanceCounterType::RateOfCountsPerSecond32;

   CounterCreationDataCollection^ ccds = gcnew CounterCreationDataCollection;
   ccds->Add( milkPerSecond );
   ccds->Add( milk );
   PerformanceCounterCategory::Create( "Orders", "Number of processed orders", ccds );
}
if (!PerformanceCounterCategory.Exists("Orders"))
{
    CounterCreationData milk = new CounterCreationData();
    milk.CounterName = "milk";
    milk.CounterType = PerformanceCounterType.NumberOfItems32;

    CounterCreationData milkPerSecond = new CounterCreationData();
    milkPerSecond.CounterName = "milk orders/second";
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32;

    CounterCreationDataCollection ccds = new CounterCreationDataCollection();
    ccds.Add(milkPerSecond);
    ccds.Add(milk);

    PerformanceCounterCategory.Create("Orders", "Number of processed orders",
        PerformanceCounterCategoryType.SingleInstance, ccds);
}
If Not PerformanceCounterCategory.Exists("Orders") Then        
    Dim milk As New CounterCreationData()
    milk.CounterName = "milk"
    milk.CounterType = PerformanceCounterType.NumberOfItems32
    
    Dim milkPerSecond As New CounterCreationData()
    milkPerSecond.CounterName = "milk orders/second"
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32
    
    Dim ccds As New CounterCreationDataCollection()
    ccds.Add(milkPerSecond)
    ccds.Add(milk)
    
    PerformanceCounterCategory.Create("Orders", "Number of processed orders", _
           PerformanceCounterCategoryType.SingleInstance, ccds)
End If

Comentarios

El uso del Exists método puede dar lugar a una penalización de rendimiento notable, mientras que todos los contadores de rendimiento de la máquina se comprueban si hay disponibilidad. Si solo está escribiendo en un contador de rendimiento, puede evitar el búsqueda global para los contadores de rendimiento mediante la creación del contador de rendimiento cuando se instala la aplicación y suponiendo que existe la categoría al acceder al contador. No hay ninguna manera de evitar la búsqueda de contadores de rendimiento al leer de contadores de rendimiento.

Nota

Para leer contadores de rendimiento de una sesión de inicio de sesión no interactiva en Windows Vista y versiones posteriores, Windows XP Professional x64 Edition o Windows Server 2003, debe ser miembro del grupo usuarios de Monitor de rendimiento o tener privilegios administrativos.

Para evitar tener que elevar los privilegios para acceder a los contadores de rendimiento en Windows Vista y versiones posteriores, agréguese al grupo usuarios de 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 accede a los contadores de rendimiento, primero debe elevar sus privilegios del usuario estándar al 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.

Consulte también

Se aplica a

Exists(String, String)

Determina si la categoría está registrada en el equipo especificado.

public:
 static bool Exists(System::String ^ categoryName, System::String ^ machineName);
public static bool Exists (string categoryName, string machineName);
static member Exists : string * string -> bool
Public Shared Function Exists (categoryName As String, machineName As String) As Boolean

Parámetros

categoryName
String

Nombre de la categoría de contador de rendimiento que se va a buscar.

machineName
String

Nombre del equipo en el que se va a buscar la categoría.

Devoluciones

Es true si la categoría está registrada; de lo contrario, es false.

Excepciones

El parámetro categoryName es null.

El parámetro categoryName es una cadena vacía ("").

o bien

El parámetro machineName no es válido.

Se ha producido un error en la llamada a una API del sistema subyacente.

No se puede encontrar la ruta de acceso a la red.

El llamador no dispone del permiso requerido.

o bien

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

Ejemplos

En el ejemplo siguiente se determina si existe un PerformanceCounterCategory objeto denominado Orders . Si no existe, el ejemplo crea el PerformanceCounterCategory objeto mediante un CounterCreationDataCollection objeto que contiene dos contadores de rendimiento.

if (  !PerformanceCounterCategory::Exists( "Orders" ) )
{
   CounterCreationData^ milk = gcnew CounterCreationData;
   milk->CounterName = "milk";
   milk->CounterType = PerformanceCounterType::NumberOfItems32;

   CounterCreationData^ milkPerSecond = gcnew CounterCreationData;
   milkPerSecond->CounterName = "milk orders/second";
   milkPerSecond->CounterType = PerformanceCounterType::RateOfCountsPerSecond32;

   CounterCreationDataCollection^ ccds = gcnew CounterCreationDataCollection;
   ccds->Add( milkPerSecond );
   ccds->Add( milk );
   PerformanceCounterCategory::Create( "Orders", "Number of processed orders", ccds );
}
if (!PerformanceCounterCategory.Exists("Orders"))
{
    CounterCreationData milk = new CounterCreationData();
    milk.CounterName = "milk";
    milk.CounterType = PerformanceCounterType.NumberOfItems32;

    CounterCreationData milkPerSecond = new CounterCreationData();
    milkPerSecond.CounterName = "milk orders/second";
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32;

    CounterCreationDataCollection ccds = new CounterCreationDataCollection();
    ccds.Add(milkPerSecond);
    ccds.Add(milk);

    PerformanceCounterCategory.Create("Orders", "Number of processed orders",
        PerformanceCounterCategoryType.SingleInstance, ccds);
}
If Not PerformanceCounterCategory.Exists("Orders") Then        
    Dim milk As New CounterCreationData()
    milk.CounterName = "milk"
    milk.CounterType = PerformanceCounterType.NumberOfItems32
    
    Dim milkPerSecond As New CounterCreationData()
    milkPerSecond.CounterName = "milk orders/second"
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32
    
    Dim ccds As New CounterCreationDataCollection()
    ccds.Add(milkPerSecond)
    ccds.Add(milk)
    
    PerformanceCounterCategory.Create("Orders", "Number of processed orders", _
           PerformanceCounterCategoryType.SingleInstance, ccds)
End If

Comentarios

El uso del Exists método puede dar lugar a una penalización de rendimiento notable, mientras que todos los contadores de rendimiento de la máquina se comprueban si hay disponibilidad. Si solo está escribiendo en un contador de rendimiento, puede evitar el búsqueda global para los contadores de rendimiento mediante la creación del contador de rendimiento cuando se instala la aplicación y suponiendo que existe la categoría al acceder al contador. No hay ninguna manera de evitar la búsqueda de contadores de rendimiento al leer de contadores de rendimiento.

Nota

Para leer contadores de rendimiento de una sesión de inicio de sesión no interactiva en Windows Vista y versiones posteriores, Windows XP Professional x64 Edition o Windows Server 2003, debe ser miembro del grupo usuarios de Monitor de rendimiento o tener privilegios administrativos.

Para evitar tener que elevar los privilegios para acceder a los contadores de rendimiento en Windows Vista y versiones posteriores, agréguese al grupo usuarios de 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 accede a los contadores de rendimiento, primero debe elevar sus privilegios del usuario estándar al 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.

Consulte también

Se aplica a