0

Windows Phone 8.1 (2015 年 7 月の SDK) から Microsoft Band に新しいタイルを追加しようとしましたが、

しかし、(以下に含まれるコードによって) 新しいタイルを追加すると、サードパーティのタイルを許可するダイアログが表示されました。このダイアログがバンド同期された後、この例外を受け取った後:

{Microsoft.Band.BandIOException: 対象のバンドに接続できませんでした。---> System.AggregateException: 1 つ以上のエラーが発生しました。---> System.Exception: 通常、各ソケット アドレス (プロトコル/ネットワーク アドレス/ポート) の使用は 1 つだけ許可されます。通常、各ソケット アドレス (プロトコル/ネットワーク アドレス/ポート) の使用は 1 つだけ許可されます。--- 内部例外スタック トレースの終了 --- System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) で System.Threading.Tasks.Task.Wait(Int32 ミリ秒タイムアウト、CancellationToken cancelToken) で System.Threading.Tasks. Task.Wait() at Microsoft.Band.Store.BluetoothTransportBase.Connect(RfcommDeviceService service, UInt16 maxConnectAttempts) --- 内部例外スタック トレースの終了 --- ...

コードで:

 using (IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]))
 {
     try
     {
         IEnumerable<BandTile> tiles = await bandClient.TileManager.GetTilesAsync();
         foreach (var t in tiles)
         {
             if (await bandClient.TileManager.RemoveTileAsync(t))
             {
             }
          }
          var remaining = await bandClient.TileManager.GetRemainingTileCapacityAsync();
          if (remaining == 0)
          {
              return;
          }

          Guid tileGuid = Guid.NewGuid();
          BandTile tile = new BandTile(tileGuid)
          {
              Name = "BandTestTile",
              SmallIcon = smallIcon,
              TileIcon = tileIcon,
          };
          await bandClient.TileManager.AddTileAsync(tile);
          await bandClient.NotificationManager.ShowDialogAsync(tileGuid, "Hello", "Hello world!");

           Guid messagesPageGuid = Guid.NewGuid();
           PageData pageContent = new PageData(
                 messagesPageGuid,
                 0,
                 new WrappedTextBlockData(
                 (Int16)TileMessagesLayoutElementId.Message1,
                 "This is the text of the first message"),
                 new WrappedTextBlockData(
                 (Int16)TileMessagesLayoutElementId.Message2,
                 "This is the text of the second message")
                );

            await bandClient.TileManager.SetPagesAsync(tileGuid, pageContent);
      }
      catch (BandException ex)
      {
      }
  }

何が問題なのですか?

4

1 に答える 1

0

通常、この例外は、複数のアプリケーション (または特定のアプリケーション内の複数のスレッド) が同時にバンドと通信しようとしていることを意味します。一度に許可される IBandClient の「接続」は 1 つだけです。

  • 他のアプリケーション (バックグラウンド タスクなど) が Band を使用していないことを確認します。
  • 上記のコードを実行する前に、アプリケーションでの IBandClient のすべての使用が適切に破棄されていることを確認してください。
于 2015-07-14T22:30:12.907 に答える