Freigeben über


PeerWatcher Klasse

Definition

Ermittelt dynamisch Peer-Apps innerhalb des drahtlosen Bereichs.

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
Vererbung
Object Platform::Object IInspectable PeerWatcher
Attribute

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
App-Funktionen
proximity

Hinweise

Sie können die FindAllPeersAsync-Methode verwenden, um eine Liste aller Peers innerhalb des Bereichs abzurufen. Die FindAllPeersAsync-Methode sucht jedoch einmal nach Peers und schließt dann ab. Alternativ können Sie die PeerWatcher-Klasse verwenden, um nach Peers zu suchen und Updates abzurufen, sobald sie gefunden werden, und Ihre Liste der verfügbaren Peer-Apps inkrementell zu aktualisieren. PeerWatcher sucht kontinuierlich nach neuen Peer-Apps in Reichweite und entfernt veraltete Peer-Apps. Sie können Ihre Liste der Peer-Apps aktualisieren, indem Sie das Add-Ereignis behandeln, das auftritt, wenn eine neue Peer-App gefunden wird, und das Removed-Ereignis , das auftritt, wenn eine veraltete Peer-App entfernt wird. Der PeerWatcher scannt weiter, bis Sie die Stop-Methode oder die PeerFinder.FindAllPeersAsync - oder PeerFinder.ConnectAsync-Methode aufrufen.

Wichtig

Bei Windows Phone 8.x-Apps schlägt das Aufrufen von PeerFinder.ConnectAsync innerhalb eines EnumerationCompleted-, Added- oder Updated-Ereignishandlers fehl. Rufen Sie sie stattdessen außerhalb dieser Ereignishandler auf, z. B. wenn der Benutzer explizit eine Verbindung mit einem Peer hergestellt hat.

Um eine instance der PeerWatcher-Klasse zu erstellen, rufen Sie die PeerFinder.Start-Methode auf, und rufen Sie dann die CreateWatcher-Methode auf.

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;
    }
}

Eigenschaften

Status

Ruft den aktuellen Zustand des PeerWatcher-Objekts ab.

Methoden

Start()

Beginnen Sie mit der dynamischen Suche nach Peer-Apps innerhalb des drahtlosen Bereichs.

Stop()

Beenden Sie die dynamische Suche nach Peer-Apps innerhalb des drahtlosen Bereichs.

Ereignisse

Added

Tritt auf, wenn eine Peer-App innerhalb des drahtlosen Bereichs gefunden wird.

EnumerationCompleted

Tritt auf, nachdem ein Scanvorgang abgeschlossen ist und alle Peer-Apps innerhalb des drahtlosen Bereichs gefunden wurden.

Removed

Tritt auf, wenn sich eine Peer-App nicht mehr in drahtloser Reichweite befindet.

Stopped

Tritt auf, wenn das PeerWatcher-Objekt beendet wurde.

Updated

Tritt auf, wenn sich displayName oder DiscoveryData für eine Peer-App innerhalb des drahtlosen Bereichs geändert hat.

Gilt für:

Weitere Informationen