共用方式為


公開管理事件

若要將應用程式變成可管理的應用程式,開發人員可以辨認應用程式中適合引發管理事件的特定情況,來告知消費者應用程式中所發生的情況 (例如錯誤條件、狀態變更等等)。

System.Management.Instrumentation 命名空間提供一些類別來公開管理事件。若要公開事件:

  • 使用 InstrumentationClass(InstrumentationType.Event) 屬性來標記類別,以將之辨識為管理事件。
  • BaseEvent 類別來衍生類別 (而非使用屬性) 以將之辨識為管理事件 (這個方法在效能上也會更有效率)。

若要引發事件,您可以建立事件類別的執行個體、填入屬性值和使用輔助器 Instrumentation.Fire()BaseEvent::Fire() 方法 (視您用來宣告事件的方法而定)。

下列程式碼範例展示如何從 BaseEvent 類別衍生來建立管理事件,以及如何從 Managed 程式碼來引發管理事件。

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

下列程式碼展示如何使用 InstrumentationClass 屬性來建立管理事件類別,以及如何從 Managed 程式碼引發管理事件。

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

請參閱

使用 System.Management 副稽核 .NET Framework 應用程式 | CLI 和 WMI 中的類別和對應 | 公開管理資料 | 繼承 | 註冊副稽核應用程式的結構描述