Поделиться через


PeerWatcher.Updated Событие

Определение

Происходит при изменении значения DisplayName или DiscoveryData для однорангового приложения в диапазоне беспроводной связи.

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

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

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

Тип события

Требования к Windows

Возможности приложения
proximity

Комментарии

Событие Updated возникает при изменении значения DisplayName или DiscoveryData для однорангового приложения. Свойство Id можно использовать для уникальной идентификации однорангового приложения и обновления пользовательского интерфейса.

Важно!

Для приложений Windows Phone версии 8.x вызов PeerFinder.ConnectAsync из обработчика обновленных событий завершится ошибкой. Вместо этого вызовите его за пределами этого обработчика событий, например, когда пользователь явно выбрал подключение к одноранговой сети.

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_Updated(PeerWatcher sender, PeerInformation peerInfo)
{
    var ignored = Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
    {
        lock (this)
        {
            // Find and update the peer in the list of discovered peers.
            for (int i = 0; i < _discoveredPeers.Count; i++)
            {
                if (_discoveredPeers[i].Id == peerInfo.Id)
                {
                    _discoveredPeers[i] = peerInfo;
                }
            }
        }
    });
}

Применяется к

См. также раздел