PeerWatcher.Added Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt auf, wenn eine Peer-App im drahtlosen Bereich gefunden wird.
// 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)
Ereignistyp
Windows-Anforderungen
App-Funktionen |
proximity
|
Hinweise
Wichtig
Bei Windows Phone 8.x-Apps schlägt das Aufrufen von PeerFinder.ConnectAsync aus einem Added-Ereignishandler fehl. Rufen Sie ihn stattdessen außerhalb dieses Ereignishandlers auf, z. B. wenn der Benutzer explizit eine Verbindung mit einem Peer hergestellt hat.
Nachdem Sie peerWatcherdurch Aufrufen der Start-Methodegestartet haben, wird das Addedevent für jede Peer-App ausgelöst, die sich im drahtlosen Bereich befindet. Der PeerWatchersucht weiterhin nach Peer-Apps innerhalb des Bereichs, bis Sie die Stop-Methodeaufrufen. Mithilfe von Addedevent können Sie Peer-Apps für den Benutzer anzeigen, während sie gefunden werden.
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);
}
});
}