2016-07-13 10 views
0

私は以下のコードを実行するとWindowsの10のBluetooth低Enegergyデバイスを見つけるためにC#を使用して、私はこのようなエラーに会った:C#スキャンのBluetooth LEデバイス

"An exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll but was not handled in user code".

エラーの行はDebug.WriteLine("Found device: " + devices[0].Id);

です

なぜ範囲外であるのかわかりません。ありがとう!

namespace BluetoothLE 
    { 
     /// <summary> 
     /// Interaction logic for MainWindow.xaml 
     /// </summary> 
     public partial class MainWindow : Window 
     { 

      public MainWindow() 
      { 
       InitializeComponent(); 
      } 

      private async void LookForPairedDevices() 
      { 

       // Get BLE devices paired with Windows 
       DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(BluetoothLEDevice.GetDeviceSelector()); 

       Debug.WriteLine("Found device: " + devices[0].Id); 


      } 
     } 

    } 
+0

'DeviceInformation.FindAllAsync(BluetoothLEDevice.GetDeviceSelector()'ので、インデックス0(アクセスしようと、何のデバイスを返されません:あなたはとてもように返されるかを見るためにforeachループを使用して検討する必要があります

答えて

3

あなたのエラーは、この行にある:あなたがコードを、あなたはdevicesが0の長さを持っており、あなたがプロパティにアクセスしようとしていることがわかりますしているデバッグする場合

Debug.WriteLine("Found device: " + devices[0].Id); 

id最初のもの(存在しないもの)の

foreach(var device in devices){ 
    Debug.WriteLine("Found device: " + device.Id); 
} 
+0

いずれかがnullを返す場合は、引数が範囲外であるnull参照例外が発生します。このエラーは存在するアイテムよりも多くのアイテムにアクセスすることについてです。 –

+0

正しいです、私はそれを編集します説明のために –

+0

Thx。 – QuickLearner

関連する問題