PerformanceCounterCategory.Create (Método) (String, String, PerformanceCounterCategoryType, CounterCreationDataCollection)
Ensamblado: System (en system.dll)
public static PerformanceCounterCategory Create ( string categoryName, string categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData )
public static PerformanceCounterCategory Create ( String categoryName, String categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData )
public static function Create ( categoryName : String, categoryHelp : String, categoryType : PerformanceCounterCategoryType, counterData : CounterCreationDataCollection ) : PerformanceCounterCategory
No aplicable.
Parámetros
- categoryName
Nombre de la categoría de contador de rendimiento personalizada que se va a crear y registrar en el sistema.
- categoryHelp
Descripción de la categoría personalizada.
- categoryType
Uno de los valores de PerformanceCounterCategoryType.
- counterData
CounterCreationDataCollection que especifica los contadores que se van a crear como parte de la nueva categoría.
Valor devuelto
PerformanceCounterCategory que está asociado a la nueva categoría personalizada, u objeto de rendimiento.| Tipo de excepción | Condición |
|---|---|
| Un nombre de contador especificado dentro de la colección counterData es referencia null (Nothing en Visual Basic) o una cadena vacía (""). O bien, Un contador especificado dentro de la colección counterData ya existe. O bien, counterName tiene una sintaxis no válida. Puede que contenga caracteres de barra invertida ("\") o su longitud supere los 80 caracteres. | |
| El valor de categoryName es referencia null (Nothing en Visual Basic). O bien El valor de counterData es referencia null (Nothing en Visual Basic). | |
| El valor de categoryType está fuera del intervalo de los valores siguientes: MultiInstance, SingleInstance o Unknown. | |
| Ya existe la categoría en el equipo local. O bien, El diseño de la colección counterData es incorrecto para los contadores base. Un contador de tipo AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction, SampleFraction o SampleCounter debe ir seguido inmediatamente de uno de los tipos de contador base (AverageBase, MultiBase, RawBase o SampleBase). | |
| 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. |
El parámetro categoryType especifica si la categoría de contador de rendimiento es de una sola instancia o de varias instancias. De manera predeterminada, una categoría es de una sola instancia cuando se crea y se convierte en categoría de varias instancias al agregar otra instancia. Las categorías se crean cuando se configura una aplicación, y las instancias se agregan en tiempo de ejecución. En las versiones 1.0 y 1.1 de .NET Framework, no es preciso saber si la categoría de un contador de rendimiento es de una sola instancia o de varias. En Microsoft .NET Framework versión 2.0, se utiliza la enumeración PerformanceCounterCategoryType para indicar si un contador de rendimiento puede tener varias instancias.
Las categorías de contador de rendimiento instaladas con .NET Framework 2.0 utilizan memoria compartida independiente, y cada categoría de contador de rendimiento tiene su propia memoria. Se puede especificar el tamaño de la memoria compartida independiente creando un DWORD denominado FileMappingSize en la clave del Registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<nombre de categoría>\Performance. El valor de FileMappingSize se establece en el tamaño de memoria compartida de la categoría. El tamaño predeterminado es el valor decimal 131072. Si el valor de FileMappingSize no está presente, se utiliza el valor del atributo fileMappingSize para el elemento performanceCounters especificado en el archivo Machine.config, lo que provoca una sobrecarga adicional en el procesamiento del archivo de configuración. Puede apreciar una mejora del rendimiento en el inicio de la aplicación estableciendo el tamaño de asignación de archivos en el Registro.
Nota: |
|---|
| Se recomienda crear nuevas categorías de contador de rendimiento durante la instalación de la aplicación y no durante la ejecución de la misma. De este modo, el sistema operativo dispondrá de tiempo para actualizar la lista de categorías registradas de contador de rendimiento. Si la lista no se ha actualizado, se producirá un error al intentar utilizar la categoría. |
Nota: |
|---|
| Para leer contadores de rendimiento, debe tener privilegios administrativos. En Windows Vista, 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á la función de usuario estándar. Para ejecutar el código que tiene acceso a los contadores de rendimiento, primero debe elevar el nivel de sus privilegios de usuario estándar a administrador. Esto se puede hacer cuando se inicia una aplicación haciendo clic con el botón secundario del mouse en el icono de la aplicación e indicando que se desea ejecutar como administrador.
|
En el siguiente ejemplo de código se muestra el uso del método Create. Se muestra cómo crear una categoría personalizada de contador de rendimiento de varias instancias para el número de pedidos por segundo.
CounterCreationData data1 = new CounterCreationData("Trucks", "Number of orders", PerformanceCounterType.NumberOfItems32); CounterCreationData data2 = new CounterCreationData("Rate of sales", "Orders/second", PerformanceCounterType.RateOfCountsPerSecond32); CounterCreationDataCollection ccds = new CounterCreationDataCollection(); ccds.Add(data1); ccds.Add(data2); Console.WriteLine("Creating Orders custom counter."); if (!PerformanceCounterCategory.Exists("Orders")) PerformanceCounterCategory.Create("Orders", "Processed orders", PerformanceCounterCategoryType.MultiInstance, ccds);
- PerformanceCounterPermission para realizar tareas administrativas con categorías de contador de rendimiento. Enumeración asociada: PerformanceCounterPermissionAccess.Administer.
Nota: