C# DeviceWatcher.Removed事件在意外时间调用。需要知道原因和处理方法

C# DeviceWatcher.Removed事件在意外时间调用。需要知道原因和处理方法,c#,uwp,bluetooth,connection,C#,Uwp,Bluetooth,Connection,我正在UWP中开发一个应用程序,用于连接我的蓝牙耳机设备。我正在使用DeviceWatcher来实现连接目的。下面是几行代码,用于理解我连接设备的过程- blDevice = await BluetoothDevice.FromIdAsync(deviceToConnectId); . //some other conditions . rfcommDeviceServicesResult = await blDevice.GetRfcommServicesForIdAsync(RfcommSe

我正在UWP中开发一个应用程序,用于连接我的蓝牙耳机设备。我正在使用
DeviceWatcher
来实现连接目的。下面是几行代码,用于理解我连接设备的过程-

blDevice = await BluetoothDevice.FromIdAsync(deviceToConnectId);
.
//some other conditions
.
rfcommDeviceServicesResult = await blDevice.GetRfcommServicesForIdAsync(RfcommServiceId.FromUuid(new Guid(serviceUUID)), BluetoothCacheMode.Uncached);
.
//if we get rfcommDeviceServicesResult.Service.Count > 0
.
deviceServices = rfcommDeviceServicesResult.Services[0];
streamSocket = new StreamSocket();

await streamSocket.ConnectAsync(deviceServices.ConnectionHostName, deviceServices.ConnectionServiceName);
dataWriter = new DataWriter(streamSocket.OutputStream);
dataReader = new DataReader(streamSocket.InputStream);
无论如何,设备已配对,连接请求已发送,服务计数不为零,
streamSocket
已连接,甚至我们正在从设备接收数据。但几秒钟后,突然调用了deviceWatcher remove,它将我的设备从枚举列表中删除。我找到的日志是-

Watcher Remove: Bluetooth#Bluetooth08:d2:3e:73:a6:85-1c:e6:1d:40:fa:13 
在文档中,我发现“DeviceWatcher.Removed事件是在从枚举设备集合中删除设备时引发的。”。据我所知,当设备从Windows中删除/取消配对时,
DeviceWatcher.Removed
被调用

同样,我的应用程序中有一个“再次连接”按钮。如果设备以某种方式断开连接,按下该按钮即可解决问题。但是在这里,在日志中我发现应用程序捕捉到了一个异常-

ex.HResult = 0x80072740, Address is already in use

我想知道事件被触发的原因,如果watcher remove表示断开连接或不断开连接,如何避免此行为以及如何避免地址已在使用问题

您是否尝试将蓝牙设备与Windows配对,以查看Windows内置蓝牙是否会给您相同的行为?