2016-03-11 8 views
0

Я использую BluetoothClient в фоновом потоке для опроса клиента BT и подключаюсь туда. код моего потока выглядит примерно так:32feet.NET не переподключиться после перехода на MS Surface 2 tablet

while (true) 
    { 
     try 
     { 
      using (var client = new BluetoothClient { InquiryLength = TimeSpan.FromSeconds(INQUIRY_MAX_DURATION)}) 
      { 

       var curAddr = ...;  
       var ep = new BluetoothEndPoint(curAddr, BluetoothService.SerialPort); 
       client.Connect(ep); 

       if (client.Connected) 
       { 
        using(var stream = client.GetStream()) 
        { 
         try 
         { 
          //Do stuff on stream 
         } 
         catch(IOException) { } 
        } 
       } 
      } 
     } 
     catch (PlatformNotSupportedException) 
     {  
      Thread.Sleep(STACK_NOT_FOUND_RETRY_INTERVAL); 
     } 
     catch (SocketException ex) 
     { 
      Thread.Sleep(CONNECTION_FAILED_RETRY_INTERVAL); 
     } 
    } 

Это подключить и правильно работать на большинстве компьютеров, в том числе MS Surface с окнами 8.1 Pro до тех пор, как он не переходит в режим ожидания. Если я отключу поверхность и оставлю ее в покое некоторое время, чтобы она вступила в приостановку, после включения всех попыток Connect() выбрасывается исключение SocketException, поскольку это неверно. Он восстанавливается только после закрытия и перезапуска приложения.

Это условие НЕ происходит, если я устанавливаю режим воздушного судна или вытаскиваю Bluetooth-ключ на ПК, похоже, происходит только после приостановки планшета. Кажется, не имеет значения, ввела ли система приостановление в подключенном или отключенном состоянии.

Что можно сделать, чтобы избежать этого состояния или восстановить его правильно?

EDIT: API нюхают показывает, что ошибка «WSAEINVAL» постоянно брошенные неуправляемым функции WSAConnect.

ответ

0

Построение версии 32feet.NET для .NET 4.0 вместо старой версии Framework, предоставленной NuGet, решило проблему. Кажется, что что-то было изменено в .NET Sockets, что устранило проблему.