我连接多个蓝牙客户端并将它们存储在列表中:
BluetoothListener blueListener = new BluetoothListener(mUUID);
blueListener.Start();
while (true)
{
try
{
//accept available clients for connection
BluetoothClient localClient = blueListener.AcceptBluetoothClient();
myClientList.Add(localClient);
}
catch(Exception e)
{ }
}
现在,当某个客户端意外断开连接时,我想将其从列表中删除。我尝试使用客户的属性' LinkKey
'为了检测断开连接的客户端,但我得到运行时错误。
在a中指定了未知,无效或不受支持的选项或级别 getsockopt或setsockopt调用
StackTrace ="在 System.Net.Sockets.Socket.GetSocketOption(SocketOptionLevel optionLevel,SocketOptionName optionName,Int32 optionLength)\ r \ n at InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.get_LinkKey(个)\ r \ n
在MSBusinessLogicPack.BluetoothLogic.BTServerCl ...
一旦我尝试获取LinkKey值,即使客户端仍然连接,也会发生此异常。
这是我用来从列表中删除客户端的代码,假设我有办法识别客户端,我目前不知道:
public override void ClientDisconnected(Guid clidenID)
{
int removeIndex = myClientList.FindIndex(x => x.LinkKey == clidenID);
myClientList.RemoveAt(removeIndex);
}
答案 0 :(得分:0)
你可以包装
int removeIndex = myClientList.FindIndex(x => x.LinkKey == clidenID);
使用try catch块,捕获抛出的确切异常类,并从catch部分的列表中删除客户端。