In brief, I would switch over to using BluetoothClient alone instead. Remove all the code to do with COM ports and just communicate using the BluetoothClient socket i.e. using
NetworkStream peer = cli.GetStream();
peer.Write(...)
peer.Read(...)
You'll find that way very much simpler and very much more robust. Its also easier to tell if the device has gone out of range/turned off etc.
Also, with the code as it stands, I'd expect that having the BluetoothClient connection open would prevent a COM port connection from working at all: Bluetooth (sadly) only allows one connection to a particular service from each peer, so one would block the other.
Anyway we're depreciating the BluetoothSerialPort class as the undellying native API is depends on is very unreliable -- as you've found :-( -- it doesn't work at all on many device types, and when it does work in general it is unreliable in practice.
We've got another method of creating Bluetooth virtual serial ports, but using serial ports is only to be recommended if a separate application needs to access the serial port. BluetoothClient is better in all other cases.
Alan J. McFarlane
http://www.alanjmcf.me.uk/
Please follow-up in the newsgroup for the benefit of all.
Have I helped? Consider visiting my Amazon wishlist, see my homepage.