Share via


PeerWatcher クラス

定義

ワイヤレス範囲内のピア アプリを動的に検出します。

public ref class PeerWatcher sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class PeerWatcher final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class PeerWatcher
Public NotInheritable Class PeerWatcher
継承
Object Platform::Object IInspectable PeerWatcher
属性

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)
アプリの機能
proximity

注釈

FindAllPeersAsync メソッドを使用して、範囲内のすべてのピアの一覧を取得できます。 ただし、 FindAllPeersAsync メソッドは、ピアを 1 回スキャンしてから完了します。 または、PeerWatcher クラスを使用してピアをスキャンし、検出されると更新プログラムを取得し、使用可能なピア アプリの一覧を段階的に更新することもできます。 PeerWatcher は、範囲内の新しいピア アプリを継続的にスキャンし、古いピア アプリを削除します。 ピア アプリの一覧を更新するには、新しいピア アプリが見つかったときに発生する Added イベントと、古いピア アプリが削除されたときに発生する Removed イベントを処理します。 PeerWatcher は、Stop メソッド、または PeerFinder.FindAllPeersAsync メソッドまたは PeerFinder.ConnectAsync メソッドを呼び出すまでスキャンを続行します。

重要

Windows Phone 8.x アプリの場合、EnumerationCompletedAdded、または Updated イベント ハンドラー内から PeerFinder.ConnectAsync を呼び出すと失敗します。 代わりに、ユーザーがピアへの接続を明示的に選択した場合など、これらのイベント ハンドラーの外部で呼び出します。

PeerWatcher クラスのインスタンスを作成するには、 PeerFinder.Start メソッドを呼び出し、 CreateWatcher メソッドを呼び出します。

private PeerWatcher _peerWatcher;
private bool _peerWatcherIsRunning = false;
private bool _peerFinderStarted = false;

// The list of peers discovered by the PeerWatcher.
ObservableCollection<PeerInformation> _discoveredPeers = new ObservableCollection<PeerInformation>();
void PeerFinder_StartPeerWatcher(object sender, RoutedEventArgs e)
{
    if (!_peerFinderStarted)
    {
        // PeerFinder must be started first.
        return;
    }

    if (_peerWatcherIsRunning)
    {
        // PeerWatcher is already running.
        return;
    }

    try
    {
        if (_peerWatcher == null)
        {
            _peerWatcher = PeerFinder.CreateWatcher();

            // Add PeerWatcher event handlers. Only add handlers once.
            _peerWatcher.Added += PeerWatcher_Added;
            _peerWatcher.Removed += PeerWatcher_Removed;
            _peerWatcher.Updated += PeerWatcher_Updated;
            _peerWatcher.EnumerationCompleted += PeerWatcher_EnumerationCompleted;
            _peerWatcher.Stopped += PeerWatcher_Stopped;
        }

        // Empty the list of discovered peers.
        _discoveredPeers.Clear();

        // Start the PeerWatcher.
        _peerWatcher.Start();

        _peerWatcherIsRunning = true;
    }
    catch (Exception ex)
    {
        // Exceptions can occur if PeerWatcher.Start is called multiple times or
        // PeerWatcher.Start is called the PeerWatcher is stopping.
    }
}

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
    if (_peerWatcher != null)
    {
        // Remove event handlers.
        _peerWatcher.Added -= PeerWatcher_Added;
        _peerWatcher.Removed -= PeerWatcher_Removed;
        _peerWatcher.Updated -= PeerWatcher_Updated;
        _peerWatcher.EnumerationCompleted -= PeerWatcher_EnumerationCompleted;
        _peerWatcher.Stopped -= PeerWatcher_Stopped;

        _peerWatcher = null;
    }
}

プロパティ

Status

PeerWatcher オブジェクトの現在の状態を取得します。

メソッド

Start()

ワイヤレス範囲内のピア アプリの動的な検索を開始します。

Stop()

ワイヤレス範囲内のピア アプリの動的な検索を停止します。

イベント

Added

ワイヤレス範囲内でピア アプリが見つかった場合に発生します。

EnumerationCompleted

スキャン操作が完了し、ワイヤレス範囲内のすべてのピア アプリが見つかった後に発生します。

Removed

ピア アプリがワイヤレス範囲内でなくなったときに発生します。

Stopped

PeerWatcher オブジェクトが停止したときに発生します。

Updated

ワイヤレス範囲内のピア アプリの DisplayName または DiscoveryData が変更されたときに発生します。

適用対象

こちらもご覧ください