UWP DeviceWatcher вызывает добавленное событие для выключенного устройства


Я создал наблюдатель устройств:

DeviceInformation.CreateWatcher(BluetoothLEDevice.GetDeviceSelectorFromDeviceName("..."));

Если устройство bluetooth, которое я ищу, выключено, сразу же возникает добавленное событие, за которым следует удаленное событие. Если он включен, я получаю только добавленное событие.

Является ли устройство каким-то образом кэшируемым, если оно было ранее найдено наблюдателем, и это то, что заставляет добавленное событие возникать, несмотря на выключение питания? Есть ли способ предотвратить это?

1 2

1 ответ:

Является ли устройство каким-то образом кэшируемым, если оно было ранее найдено наблюдателем, и это то, что заставляет добавленное событие возникать, несмотря на то, что оно выключено? Есть ли способ предотвратить это?

Устройство не будет кэшироваться наблюдателем, перечисление DeviceWatcher происходит с системного уровня, и потребуется немного времени, чтобы проверить изменение состояния устройства Bluetooth. Это не мгновенная реакция.

Если вы хотите проверить DeviceWatcher, пожалуйста, обратитесь к следующему шаги.

  1. откройте Системные настройки -- > устройства-->добавить Bluetooth или другое устройство-->Bluetooth.

Введите описание изображения здесь

  1. Начните свой DeviceWatcher. Вы обнаружите, что информация об устройстве быстро отображается в виде списка. Потому что источник данных представления списка происходит из коллекции системного уровня.

  2. Остановите DeviceWatcher, а затем остановите устройство bluetooth, пока вы не найдете информацию об устройстве bluetooth в разделе " Добавить устройство" окно.

  3. Начните свой DeviceWatcher. Вы обнаружите, что информация о вашем устройстве bluetooth не будет отображаться снова, и приложение не вызовет событие, как вы упомянули

Примечание

Для третьего шага, если вы запустите DeviceWatcher до того, как информация об устройстве bluetooth исчезнет в списке "Добавить устройство", то порядок выполнения событий будет таким же, как вы упомянули.