ポータブル デバイスが挿入されたときにイベントをキャッチしようとしましたが、それができました。私の問題は、挿入の 2 つのイベントを呼び出したことです。
これが私のコードです:
private void DeviceInsertedEvent(object sender, EventArrivedEventArgs e)
{
MessageBox.Show("Device Received");
}
private void DeviceRemovedEvent(object sender, EventArrivedEventArgs e)
{
MessageBox.Show("Device Removed");
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
WqlEventQuery insertQuery = new WqlEventQuery("SELECT * FROM __InstanceCreationEvent WITHIN 3 WHERE TargetInstance ISA 'Win32_PnPEntity'");
ManagementEventWatcher insertWatcher = new ManagementEventWatcher(insertQuery);
insertWatcher.EventArrived += new EventArrivedEventHandler(DeviceInsertedEvent);
insertWatcher.Start();
WqlEventQuery removeQuery = new WqlEventQuery("SELECT * FROM __InstanceDeletionEvent WITHIN 3 WHERE TargetInstance ISA 'Win32_PnPEntity'");
ManagementEventWatcher removeWatcher = new ManagementEventWatcher(removeQuery);
removeWatcher.EventArrived += new EventArrivedEventHandler(DeviceRemovedEvent);
removeWatcher.Start();
}
電話をコンピューターに挿入したとき。受け取ったデバイスの2つのケースが発生しました。
最初のインスタンスで停止するにはどうすればよいですか?