다음을 통해 공유


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 메서드는 피어를 한 번 검색한 다음 완료합니다. 또는 PeerWatcher 클래스를 사용하여 피어가 발견되면 피어를 검색하고 업데이트를 받고 사용 가능한 피어 앱 목록을 증분 방식으로 업데이트할 수 있습니다. PeerWatcher는 범위 내에서 새 피어 앱을 지속적으로 검사하고 부실 피어 앱을 제거합니다. 새 피어 앱이 발견될 때 발생하는 Added 이벤트와 부실 피어 앱이 제거될 때 발생하는 Removed 이벤트를 처리하여 피어 앱 목록을 업데이트할 수 있습니다. PeerWatcher는 Stop 메서드 또는 PeerFinder.FindAllPeersAsync 또는 PeerFinder.ConnectAsync 메서드를 호출할 때까지 계속 검색합니다.

중요

Windows Phone 8.x 앱의 경우 열거형Completed, 추가됨 또는 업데이트된 이벤트 처리기 내에서 PeerFinder.ConnectAsync를 호출하지 못합니다. 대신 사용자가 피어에 연결하도록 명시적으로 선택한 경우와 같이 이러한 이벤트 처리기 외부에서 호출합니다.

PeerWatcher 클래스의 instance 만들려면 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 가 변경된 경우에 발생합니다.

적용 대상

추가 정보