Share via


PeerWatcher.Added Event

Definition

Occurs when a peer app is found within wireless range.

// Register
event_token Added(TypedEventHandler<PeerWatcher, PeerInformation const&> const& handler) const;

// Revoke with event_token
void Added(event_token const* cookie) const;

// Revoke with event_revoker
PeerWatcher::Added_revoker Added(auto_revoke_t, TypedEventHandler<PeerWatcher, PeerInformation const&> const& handler) const;
public event TypedEventHandler<PeerWatcher,PeerInformation> Added;
function onAdded(eventArgs) { /* Your code */ }
peerWatcher.addEventListener("added", onAdded);
peerWatcher.removeEventListener("added", onAdded);
- or -
peerWatcher.onadded = onAdded;
Public Custom Event Added As TypedEventHandler(Of PeerWatcher, PeerInformation) 

Event Type

Windows requirements

App capabilities
proximity

Remarks

Important

For Windows Phone 8.x apps, calling PeerFinder.ConnectAsync from within an Added event handler will fail. Instead, call it outside of this event handler, for example, when the user has explicitly chosen to connect to a peer.

After you start the PeerWatcherby calling the Startmethod, the Addedevent is raised for each peer app found within wireless range. The PeerWatchercontinues scanning for peer apps within range until you call the Stopmethod. Using the Addedevent, you can display peer apps to the user as they are found.

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;
    }
}
private void PeerWatcher_Added(PeerWatcher sender, PeerInformation peerInfo)
{
    var result = Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
    {
        lock (this)
        {
            _discoveredPeers.Add(peerInfo);
        }
    });
}

Applies to

See also