私のアプリケーションでは、ペンドライブのアタッチおよびデタッチイベントでイベントを発生させたいと考えています。次のコードを使用してイベントを発生させました。
private ManagementEventWatcher watcherAttach;
private ManagementEventWatcher watcherRemove;
watcherAttach = new ManagementEventWatcher();
watcherAttach.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
watcherAttach.Query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2");
watcherAttach.Start();
watcherRemove = new ManagementEventWatcher();
watcherRemove.EventArrived += new EventArrivedEventHandler(watcher_EventRemoved);
watcherRemove.Query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 3");
watcherRemove.Start();
// this are events
void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
// code to execute
}
void watcher_EventRemoved(object sender, EventArrivedEventArgs e)
{
//code to execute
}
しかし問題は、両方のイベントが 2 回発生し、コードが両方のイベントで完全に実行されないことです。これを克服する方法を教えてもらえますか?