0
휴대용 장치를 넣었을 때 이벤트를 잡으려고 시도했습니다. 내 문제는 그것이 삽입의 두 가지 사건을 호출했다는 것입니다.휴대용 장치 감지 단일 인스턴스 설정 방법
여기 내 코드입니다 : 내 휴대폰을 컴퓨터에 삽입
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();
}
. 받은 장치의 두 가지 경우가 발생했습니다.
는 어떻게하면 첫 번째 인스턴스에 중지해야합니까?
무엇이 문제입니까? – JohnSaps
'ManagementEventWatcher insertWatcher'를 global로 만들고, 장치가 처음 발견 될 때'insertWatcher.Stop()'을 넣으십시오. 제거 될 때'insertWatcher.Start()'를 제거 된 이벤트에 넣는다. – Ricky
@JohnSaps 첫 번째 인스턴스에서 어떻게 중지합니까? –