Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para que una aplicación se pueda administrar, el programador puede identificar en ella ciertas condiciones en las que convenga generar un evento de administración para notificar a los consumidores que ha ocurrido algo en la aplicación (como una condición de error, un cambio de estado, etcétera).
El espacio de nombres System.Management.Instrumentation proporciona algunas clases para exponer eventos de administración. Para exponer un evento:
- Marque la clase con el atributo InstrumentationClass(InstrumentationType.Event) con el fin de identificarlo como evento de administración.
- Derive la clase de la clase BaseEvent para identificarla como evento de administración en lugar de utilizar un atributo (este método también es más eficaz en cuanto a rendimiento).
Para generar un evento, cree una instancia de la clase de evento, rellene los valores de las propiedades y utilice el ayudante Instrumentation.Fire() o el método BaseEvent::Fire() (según el método que eligió al declarar el evento).
En el ejemplo de código siguiente se demuestra cómo crear una clase de evento de administración mediante la derivación de la clase BaseEvent y cómo generar el evento de administración con código administrado.
using System;
using System.Management;
using System.Configuration.Install;
using System.Management.Instrumentation;
// This example demonstrates how to create a management event class by deriving
// from the BaseEvent class and to raise a management event from managed code.
// Specify which namespace the management event class is created in
[assembly:Instrumented("Root/Default")]
// Let the system know you will run InstallUtil.exe utility against
// this assembly
[System.ComponentModel.RunInstaller(true)]
public class MyInstaller : DefaultManagementProjectInstaller {}
// Create a management instrumentation event class
public class MyEvent : System.Management.Instrumentation.BaseEvent {
public string Event_Name;
}
public class Sample_EventProvider {
public static int Main(string[] args) {
MyEvent e = new MyEvent();
e.Event_Name = "Hello";
// Raise a management event
Instrumentation.Fire(e);
return 0;
}
}
En el ejemplo siguiente se demuestra cómo crear una clase de evento de administración mediante el atributo InstrumentationClass y cómo generar un evento de administración con código administrado.
using System;
using System.Management;
using System.Configuration.Install;
using System.Management.Instrumentation;
// This example demonstrates how to create a management event class by using
// the InstrumentationClass attribute and to raise a management event from
// managed code.
// Specify which namespace the management event class is created in
[assembly:Instrumented("Root/Default")]
// Let the system know you will run InstallUtil.exe utility against
// this assembly
[System.ComponentModel.RunInstaller(true)]
public class MyInstaller : DefaultManagementProjectInstaller {}
// Create a management instrumentation event class
[InstrumentationClass(InstrumentationType.Event)]
public class MyEvent {
public string Event_Name;
}
public class WMI_InstrumentedEvent_Example {
public static void Main() {
MyEvent e = new MyEvent();
e.Event_Name = "Hello";
// Raise a management event
Instrumentation.Fire(e);
return;
}
}
Vea también
Instrumentar aplicaciones de .NET Framework con System.Management | Clases y asignación en CLI y WMI | Exponer datos de administración | Herencia | Registrar el esquema de una aplicación instrumentada