Ik heb een ManagementEventWatcher gemaakt die events moet geven als er en USB drive beschikbaar komt.
Om deze te registreren heb ik deze code gemaakt:
en aangeroepen met :
Als ik een stick invoer dan krijg ik mooi events in mijn functie
Maar deze word 2 of 3 keer aangeroepen per stick (is afhankelijk van de stick)
Ik ga er vanuit dat het events zijn als:
* physical connection
* starting mounting
* mounted
Het lukt me niet om onderscheid te maken tussen deze events en om er zeker van te zijn wanneer een stick gemount en helemaal klaar is om te gebruiken.
Om deze te registreren heb ik deze code gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| private void RegisterUsbHandler(out ManagementEventWatcher EventWatcher, string eventName, EventArrivedEventHandler eventHandler) { // Create event query to be notified within 1 second of // a change in a service WqlEventQuery query = new WqlEventQuery(eventName, new TimeSpan(0, 0, 1), "TargetInstance isa \"Win32_USBControllerDevice\""); // Initialize an event watcher and subscribe to events // that match this query EventWatcher = new ManagementEventWatcher(); EventWatcher.EventArrived += eventHandler; EventWatcher.Query = query; EventWatcher.Start(); } |
en aangeroepen met :
code:
1
| RegisterUsbHandler(out USBDriveInsertedWatcher, "__InstanceCreationEvent", USBDriveInserted); |
Als ik een stick invoer dan krijg ik mooi events in mijn functie
code:
1
| private void USBDriveInserted(object sender, EventArrivedEventArgs e){/* some code*/} |
Maar deze word 2 of 3 keer aangeroepen per stick (is afhankelijk van de stick)
Ik ga er vanuit dat het events zijn als:
* physical connection
* starting mounting
* mounted
Het lukt me niet om onderscheid te maken tussen deze events en om er zeker van te zijn wanneer een stick gemount en helemaal klaar is om te gebruiken.
[ Voor 17% gewijzigd door Verwijderd op 14-01-2010 08:55 ]