EventArrivedEventHandler デリゲート
アセンブリ: System.Management (system.management.dll 内)

/** @delegate */ public delegate void EventArrivedEventHandler ( Object sender, EventArrivedEventArgs e )

次に示す非同期の例では、イベントを毎秒発生させるように WMI タイマを設定して、不要になったときに WMI タイマを削除します。ManagementEventWatcher は、WMI イベントが配信されたときに発生する複数の .NET Framework イベントを定義します。受信データを処理するために、これらのイベントにデリゲートが割り当てられます。
Imports System Imports System.Management ' This example shows asynchronous consumption of events. ' In this example you are listening for timer events. ' The first part of the example sets up the timer. Public Class EventWatcherAsync Public Sub New() ' Set up a timer to raise events every 1 second '============================================= Dim timerClass As New ManagementClass( _ "__IntervalTimerInstruction") Dim timer As ManagementObject = _ timerClass.CreateInstance() timer("TimerId") = "Timer1" timer("IntervalBetweenEvents") = 1000 timer.Put() ' Set up the event consumer '========================== ' Create event query to receive timer events Dim query As New WqlEventQuery("__TimerEvent", _ "TimerId=""Timer1""") ' Initialize an event watcher and subscribe to ' events that match this query Dim watcher As New ManagementEventWatcher(query) ' Set up a listener for events AddHandler watcher.EventArrived, _ AddressOf Me.HandleEvent ' Start listening watcher.Start() ' Do something in the meantime System.Threading.Thread.Sleep(10000) ' Stop listening watcher.Stop() End Sub Private Sub HandleEvent(ByVal sender As Object, _ ByVal e As EventArrivedEventArgs) Console.WriteLine("Event arrived !") End Sub Public Overloads Shared Function _ Main(ByVal args() As String) As Integer 'start the event watcher Dim eventWatcher As New EventWatcherAsync Return 0 End Function End Class
using System; using System.Management; // This example shows asynchronous consumption of events. // In this example you are listening for timer events. // The first part of the example sets up the timer. public class EventWatcherAsync { public EventWatcherAsync() { // Set up a timer to raise events every 1 second //============================================= ManagementClass timerClass = new ManagementClass("__IntervalTimerInstruction"); ManagementObject timer = timerClass.CreateInstance(); timer["TimerId"] = "Timer1"; timer["IntervalBetweenEvents"] = 1000; timer.Put(); // Set up the event consumer //========================== // Create event query to receive timer events WqlEventQuery query = new WqlEventQuery("__TimerEvent", "TimerId=\"Timer1\""); // Initialize an event watcher and // subscribe to timer events ManagementEventWatcher watcher = new ManagementEventWatcher(query); // Set up a listener for events watcher.EventArrived += new EventArrivedEventHandler( this.HandleEvent); // Start listening watcher.Start(); // Do something in the meantime System.Threading.Thread.Sleep(10000); // Stop listening watcher.Stop(); } private void HandleEvent(object sender , EventArrivedEventArgs e) { Console.WriteLine("Event arrived !"); } public static void Main(string[] args) { // start the event watcher EventWatcherAsync eventWatcher = new EventWatcherAsync(); } }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- EventArrivedEventHandler デリゲートのページへのリンク