次の方法で共有


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

注釈

ピア アプリの DisplayName または DiscoveryData が変更されると、Updated イベントが発生します。 Id プロパティを使用すると、ピア アプリを一意に識別し、UI を更新できます。

重要

Windows Phone 8.x アプリの場合、Updated イベント ハンドラー内から 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;
                }
            }
        }
    });
}

適用対象

こちらもご覧ください