1

次のコードを使用して実行すると、InTheHand.Net.Bluetooth ライブラリを使用して Bluetooth 接続のリッスンを開始する Windows サービスを開発しています。

            btListener = new BluetoothListener(service);
            btListener.Start();

Windows の起動が完了した後 (Windows の起動後約 5 分間) にサービスを手動で開始すると、すべてが正常に機能し、Bluetooth サービスが正常に開始されます。

ただし、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()

Bluetoothデバイスがまだ初期化されていないときに「Start」メソッドが呼び出されるのが早すぎるためだと思います。この同様の問題に遭遇した人もいますか? 正常に開始できるようにするために「開始」メソッドをいつ呼び出す必要があるかを知る方法についてのアイデアはありますか?

フィードバックやコメントをお待ちしております。

ありがとう、

コック

4

1 に答える 1

1

通常、この種の問題は、開始前に実行する必要があるサービスに依存するようにサービスを構成することで解決します。次に、SCM は、他のサービスが開始される前にサービスを開始しないようにします。

このKB 記事は少し古いですが、基本を説明しています。

于 2012-07-11T03:52:59.497 に答える