Freigeben über


Offenlegen von Verwaltungsereignissen

Damit eine Anwendung verwaltbar wird, kann der Entwickler bestimmte Bedingungen in der Anwendung kennzeichnen, bei denen das Auslösen eines Verwaltungsereignisses angemessen ist, um alle Consumer über eine Begebenheit in der Anwendung (z. B. eine Fehlerbedingung, eine Statusänderung usw.) zu informieren.

Der System.Management.Instrumentation-Namespace stellt einige Klassen zum Offenlegen von Verwaltungsereignissen zur Verfügung. So legen Sie ein Ereignis offen:

  • Markieren Sie die Klasse mit dem InstrumentationClass(InstrumentationType.Event)-Attribut, um sie als Verwaltungsereignis zu kennzeichnen.
  • Leiten Sie die Klasse von der BaseEvent-Klasse ab, um sie als Verwaltungsereignis zu kennzeichnen, ohne ein Attribut zu verwenden. (Diese Methode ist außerdem bezüglich der Leistung effizienter.)

Erstellen Sie zum Auslösen eines Ereignisses eine Instanz der Ereignisklasse, geben Sie Werte für die Eigenschaften ein, und verwenden Sie (in Abhängigkeit davon, welche Methode zum Deklarieren des Ereignisses verwendet wurde) entweder die Hilfsmethode Instrumentation.Fire() oder die BaseEvent::Fire()-Methode.

Anhand des folgenden Codebeispiels wird demonstriert, wie eine Verwaltungsereignisklasse durch Ableiten von der BaseEvent-Klasse erstellt wird und wie das Verwaltungsereignis über den verwalteten Code ausgelöst wird.

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

Anhand des folgenden Beispiels wird demonstriert, wie eine Verwaltungsereignisklasse mit Hilfe des InstrumentationClass-Attributs erstellt wird und wie das Verwaltungsereignis über den verwalteten Code ausgelöst wird.

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

Siehe auch

Instrumentieren von .NET Framework-Anwendungen mit System.Management | Klassen und Zuordnung in CLI und WMI | Verfügbarmachen von Verwaltungsdaten | Vererbung | Registrieren des Schemas für eine instrumentierte Anwendung