Как надежно отключить соединение Bluetooth

Я унаследовал приложение, которое должно подключаться и отключаться от устройства через Bluetooth. Приложение более-менее работает, но по мере добавления функционала понял, что переподключение к устройству после первого подключения проблематично. Существующий код обрабатывает проблемы, перехватывая исключения, возникающие во время подключения, удаляя объект BluetoothClient, перераспределяя его и повторяя попытку. Пользовательский интерфейс моего приложения, кажется, блокируется во время возникновения этих исключений, что, очевидно, проблематично.

Я экспериментировал и пробовал разные вещи, но безуспешно. Я обнаружил, что при возникновении проблемы BluetoothClient показывает, что он подключен. Поэтому я пробовал разные вещи, чтобы закрыть это существующее соединение: вызов Close(), вызов Dispose() и перераспределение и т. д. Ничто из этого, кажется, не улучшает ситуацию. Еще одна вещь, которую я пробовал, вместо того, чтобы ждать, пока я захочу переподключиться, - это попытаться закрыть соединение в то время, когда я знаю, что устройство отключено (я пробовал разные вещи, такие как вызов Close() или Dispose(), перераспределение и др.). Кажется, ничего не помогает.

Итак, мой вопрос: есть ли надежный способ закрыть соединение Bluetooth, чтобы вы могли повторно подключиться, не вызывая исключений?

Я использую библиотеку 32feet.NET/InTheHand.NET, кстати. К сожалению, нет подробной документации по библиотеке, которую я могу найти.

Можно ли управлять соединениями Bluetooth без использования этой библиотеки? Все мои поиски в Google не нашли других вариантов, которые хорошо документированы.


person Mike G    schedule 06.02.2019    source источник
comment
Судя по простому поиску, это просто .Close(). Может быть полезно: stackoverflow.com/questions/39470036/   -  person Symon    schedule 06.02.2019
comment
Я не знаком с LE по сравнению с обычным bluetooth, но я не использую библиотеки, связанные с LE. Можно ли использовать библиотеки LE с устройством, отличным от LE? Я должен выяснить, является ли мое устройство LE или нет.   -  person Mike G    schedule 06.02.2019
comment
Мое устройство не LE, поэтому я не уверен, смогу ли я использовать этот фреймворк.   -  person Mike G    schedule 06.02.2019
comment
Вам может быть полезно добавить работу, которую вы пробовали, к сообщению. код, который вы используете, и т. д.   -  person Symon    schedule 06.02.2019
comment
Вы пытались поместить соединение в блок с использованием, чтобы оно удалялось при выходе из блока?   -  person jdweng    schedule 06.02.2019
comment
Мне нужно будет написать тестовую программу, чтобы легко воссоздать проблему, а затем опубликовать здесь. В то же время я поместил свое сканирование / подключение Bluetooth в свой собственный поток, чтобы он больше не мешал моему пользовательскому интерфейсу.   -  person Mike G    schedule 06.02.2019