ManagementEventWatcher Constructor (ManagementScope, EventQuery)

ManagementEventWatcher Constructor (ManagementScope, EventQuery)


Initializes a new instance of the ManagementEventWatcher class that listens for events conforming to the given WMI event query.

Namespace:   System.Management
Assembly:  System.Management (in System.Management.dll)

public ManagementEventWatcher(
	ManagementScope scope,
	EventQuery query


Type: System.Management.ManagementScope

A ManagementScope representing the scope (namespace) in which the watcher will listen for events.

Type: System.Management.EventQuery

An EventQuery representing a WMI event query, which determines the events for which the watcher will listen.

Full trust for the immediate caller. This member cannot be used by partially trusted code. For more information, see Using Libraries from Partially Trusted Code.

In this code example, the client receives notification when an instance of Win32_Process is created because the event class is __InstanceCreationEvent. For more information, see the Windows Management Instrumentation documentation in the MSDN Library at The client receives events synchronously by calling the WaitForNextEvent method. This example can be tested by starting a process, such as Notepad, while the example code is running.

using System;
using System.Management;

// This example shows synchronous consumption of events. 
// The client is blocked while waiting for events. 

public class EventWatcherPolling 
    public static int Main(string[] args) 
        // Create event query to be notified within 1 second of 
        // a change in a service
        string query = 
            "SELECT * FROM __InstanceCreationEvent "
            + "WITHIN 1 WHERE " +
            "TargetInstance isa \"Win32_Process\"";

        // Initialize an event watcher and subscribe to events 
        // that match this query
        ManagementEventWatcher watcher =
            new ManagementEventWatcher(
            new ManagementScope("root\\CIMV2"),
            new EventQuery(query));

        // times out watcher.WaitForNextEvent in 5 seconds
        watcher.Options.Timeout = new TimeSpan(0,0,5);

        // Block until the next event occurs 
        // Note: this can be done in a loop if waiting for 
        //        more than one occurrence
            "Open an application (notepad.exe) to trigger an event.");
        ManagementBaseObject e = watcher.WaitForNextEvent();

        //Display information from the event
            "Process {0} has been created, path is: {1}", 

        //Cancel the subscription
        return 0;

.NET Framework
Available since 1.1
Return to top
© 2015 Microsoft