BluetoothListener.AcceptBluetooth клиент блокирует в 32Feet Windows 7
Мы создаем приложение для связи внешнего устройства с Windows PC (здесь мы используем Windows 7), в ПК мы используем Bluetooth-ключ.
когда мы попытались обнаружить и подключить устройство, это было успешно в Windows PC.
Но в части кода мы пытаемся подключить устройство, но это не удалось, и здесь мы используем 32feet.net для подключения устройства.
Ниже кода я пытаюсь подключить устройство.
////_serviceClassId = new Guid("9bde4762-89a6-418e-bacf-fcd82f1e0677");
Guid serviceClass = BluetoothService.RFCommProtocol;
int selectedIndex = device_list.SelectedIndex;
BluetoothDeviceInfo selectedDevice = this.array[selectedIndex];
var lsnr = new BluetoothListener(serviceClass);
lsnr.Start();
Task.Run(() => Listener(lsnr));
и метод слушателя
private void Listener(BluetoothListener lsnr)
{
try
{
while (true)
{
using (var client = lsnr.AcceptBluetoothClient())
{
using (var streamReader = new StreamReader(client.GetStream()))
{
try
{
var content = streamReader.ReadToEnd();
if (!string.IsNullOrEmpty(content))
{
////_responseAction(content);
}
}
catch (IOException)
{
client.Close();
break;
}
}
}
}
}
catch (Exception exception)
{
// todo handle the exception
// for the sample it will be ignored
}
}
Если я запускаю приложение, оно будет заблокировано в lsnr.AcceptBluetoothClient()
Может ли кто-нибудь помочь, что не так в этом?
Примечание. Устройство Bluetooth создало два порта, один из которых является входящим, а другой - исходящим, когда мы подключаемся через ПК.
1 ответ
Это потому, что он ждет, пока клиент не подключится. Вы должны запустить его в потоке, чтобы работать одновременно!