Я впервые использую BackGroundWorker и EventHandler. Я не знаю, правильно ли я делаю это или нет. Я хочу искать подключенные USB-устройства (только у которых есть определенный VID & PID). Потому что отладка программы не хочет идти внутри цикла bw_worker_dowork.C# backgroundworker & eventhandler вместе - поиск устройств USB
Я также использую WPF с методом MVVM - для информации.
Прошу помощи. Я делаю это правильно или нет?
BackgroundWorker bw_worker;
USBmiddleware cs = new USBmiddleware();
public Windows1ViewModel()
{
bw_worker = new BackgroundWorker();
bw_worker.DoWork += new DoWorkEventHandler(bw_worker_dowork);
bw_worker.WorkerReportsProgress = true;
bw_worker.WorkerReportsProgress = true;
}
void bw_worker_dowork(object sender, DoWorkEventArgs e)
{
WqlEventQuery insertQuery = new WqlEventQuery("SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_USBHub'");
ManagementEventWatcher insertWatcher = new ManagementEventWatcher(insertQuery);
insertWatcher.EventArrived += new EventArrivedEventHandler(DeviceInsertedEvent);
insertWatcher.Start();
WqlEventQuery removeQuery = new WqlEventQuery("SELECT * FROM __InstanceDeletionEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_USBHub'");
ManagementEventWatcher removeWatcher = new ManagementEventWatcher(removeQuery);
removeWatcher.EventArrived += new EventArrivedEventHandler(DeviceRemovedEvent);
removeWatcher.Start();
// Do something while waiting for events
System.Threading.Thread.Sleep(20000000);
}
void DeviceInsertedEvent(object sender, EventArrivedEventArgs e)
{
cs.FindDevices();
}
void DeviceRemovedEvent(object sender, EventArrivedEventArgs e)
{
cs.FindDevices();
}
Я просто хочу, чтобы Windows открывала и искала USB-устройства в фоновом режиме :) – Pukaai
Вам не нужно «BackgroundWorker» вообще, если объекты 'insertWatcher' и' removeWatcher' остаются в области. Переместите содержимое метода 'bw_worker_dowork' (кроме' Sleep') в конструктор, и оно должно работать. –
Я тестирую также версию без BackgroundWorker, но потом у меня проблема, что ничего не случилось, когда я подключаю устройство или отключает его. – Pukaai