2017-10-02 7 views
-1

このブルートゥースコードの踏面に問題があります。私はこのライブラリhttps://github.com/xabre/xamarin-bluetooth-leを使用しています。アンドロイド(samsung SM G900V Api 23)を対象としていますが、iOS(iphone 6 10.3)で実行すると、ブレークポイントを追加しない限りアップデートは実行されません。私はいくつかのことを試しましたが、私はC#とスレッド化に新しいです。私は間違って何をしていますか?この同様C#async methods with BLE

await infoCharacter.StartUpdatesAsync().ContinueWith(result => 
{ 
    infoCharacter.ValueUpdated += (o, args) => 
    { 
     var bytes = args.Characteristic.Value; 
     Console.WriteLine("Characteristic Value: {0}", bytes); 
     PrintByteArray(bytes); 
    }; 
}); 

答えて

-1

わかりましたので、私は解決策を見つけただけに追加されたイベントハンドラの間でiOSの競合状態があるようにそれはそう、なぜ私は完全には理解していないしようとしました

​​

変数と更新が開始されますか?この問題は、アンドロイドデバイスで私のために発生しません。

ソリューション:

public async void ConnectToDeviceService(IDevice device) 
{ 
    service = await device.GetServiceAsync(Guid.Parse(_UUIDS.SERVICE_UUID)); 

    infoCharacter = await service.GetCharacteristicAsync(Guid.Parse(_UUIDS.DEVICE_INFO_UUID)); 
    infoCharacter.ValueUpdated += (o, args) => 
    { 
     var bytes = args.Characteristic.Value; 
     Console.WriteLine("Characteristic Value: {0}", bytes); 
     PrintByteArray(bytes); 
    }; 

    await Task.Delay(1000); 
    await infoCharacter.StartUpdatesAsync(); 
}