共用方式為


PeerWatcher 類別

定義

動態探索無線範圍內的對等應用程式。

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
繼承
Object Platform::Object IInspectable PeerWatcher
屬性

Windows 需求

裝置系列
Windows 10 (已於 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox 引進)
API contract
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)
應用程式功能
proximity

備註

您可以使用 FindAllPeersAsync 方法來取得範圍內所有對等的清單。 不過, FindAllPeersAsync 方法會掃描對等一次,然後完成。 或者,您可以使用 PeerWatcher 類別來掃描對等,並在找到更新時取得更新,並以累加方式更新可用的對等應用程式清單。 PeerWatcher 會持續掃描範圍內是否有新的對等應用程式,並移除過時的對等應用程式。 您可以藉由處理 新增 事件來更新對等應用程式清單,此事件會在找到新的對等應用程式時發生,以及移除過時對等應用程式時所發生的 已移除 事件。 PeerWatcher 會繼續掃描,直到您呼叫 Stop 方法或 PeerFinder.FindAllPeersAsyncPeerFinder.ConnectAsync 方法為止。

重要

針對 Windows Phone 8.x 應用程式,從EnumerationCompletedAddedUpdated事件處理常式內呼叫PeerFinder.ConnectAsync將會失敗。 相反地,在這些事件處理常式之外呼叫它,例如,當使用者明確選擇連接到對等時。

若要建立 PeerWatcher 類別的實例,請呼叫 PeerFinder.Start 方法,然後呼叫 CreateWatcher 方法。

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

屬性

Status

取得 PeerWatcher 物件的目前狀態。

方法

Start()

開始動態搜尋無線範圍內的對等應用程式。

Stop()

停止動態搜尋無線範圍內的對等應用程式。

事件

Added

在無線範圍內找到對等應用程式時發生。

EnumerationCompleted

在掃描工作完成且找到無線範圍內的所有對等應用程式之後發生。

Removed

當對等應用程式不再位於無線範圍內時發生。

Stopped

發生于 PeerWatcher 物件已停止時。

Updated

發生于無線範圍內對等應用程式的 DisplayNameDiscoveryData 已變更時。

適用於

另請參閱