我正在开发一个 Windows 服务,它在使用以下代码运行时使用 InTheHand.Net.Bluetooth 库开始监听蓝牙连接:
btListener = new BluetoothListener(service);
btListener.Start();
如果在 Windows 完成启动后手动启动该服务(例如在 Windows 启动大约 5 分钟后),那么一切正常:蓝牙服务启动成功。
但是,如果我将 Windows 服务的启动类型设置为自动,则该部分代码会导致以下异常:
System.Net.Sockets.SocketException (0x80004005): An invalid argument was supplied
at InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.ThrowSocketExceptionForHR(Int32 errorCode)
at InTheHand.Net.Bluetooth.Msft.MicrosoftSdpService.SetService(Byte[] sdpRecord, ServiceClass cod)
at InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.SetService(Byte[] sdpRecord, ServiceClass cod)
at InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Start(Int32 backlog)
at InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Start()
我认为这是因为蓝牙设备尚未初始化时调用“开始”方法太快了。有没有人也遇到过类似的问题?关于如何知道何时应该调用“开始”方法以确保它可以成功启动的任何想法?
感谢任何反馈或评论。
谢谢,
国语