2017-07-19 90 views
2

我正在WPF應用程序中使用下面的代碼進行配對測試,但它總是以失敗狀態失敗。DeviceInformation PairAsync在WPF中不起作用

要使用BluetoothLe庫我剛添加引用(C:\ Program Files文件(x86)的\的Windows套件\ 10 \ UnionMetadata \ Windows.winmd)

if (!DeviceInformation.Pairing.IsPaired) 
{ 
    Logger.Info($"{DeviceInformation.Name} Try Pairing"); 
    var result = await DeviceInformation.Pairing.PairAsync(DevicePairingProtectionLevel.None); 

    Logger.Info($"{result.Status}"); 
} 

奇怪的是

  1. 與UWP App配對使用相同的代碼即可。

  2. 在UWP和WPF應用程序中都可以解除配對。

  3. 區別在於UWP應用程序總是彈出系統對話框來確認配對和未配對,但WPF應用程序不顯示任何對話框。

任何人都可以幫助我嗎?

解決!謝謝。 我只是使用自定義配對。

public async void Pair() 
{ 
    if (!DeviceInformation.Pairing.IsPaired) 
    { 
     Logger.Info($"{DeviceInformation.Name} Try Pairing"); 
     DeviceInformation.Pairing.Custom.PairingRequested += CustomOnPairingRequested; 

     var result = await DeviceInformation.Pairing.Custom.PairAsync(
       DevicePairingKinds.ConfirmOnly, DevicePairingProtectionLevel.None); 
     DeviceInformation.Pairing.Custom.PairingRequested -= CustomOnPairingRequested; 

     Logger.Info($"{result.Status}"); 
    } 

} 


private void CustomOnPairingRequested(
     DeviceInformationCustomPairing sender, 
     DevicePairingRequestedEventArgs args) 
{ 
    Logger.Info("Test"); 
    args.Accept(); 
} 

回答

2

我碰到了類似的代碼,類似的問題 - 即使它不是你問什麼了,我想可能是別人誰遇到這種有用問題:

我的問題是,參數。接受()似乎沒有任何影響配對過程中,有時配對會失敗,有時會超時。

雖然我不知道爲什麼,之所以說是我調用接受()App.Current.Dispatcher.InvokeAsync()內,而不是直接調用它。調用Task.Run()也可以正常工作。