PeerWatcher 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
動態探索無線範圍內的對等應用程式。
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
- 繼承
- 屬性
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.FindAllPeersAsync 或 PeerFinder.ConnectAsync 方法為止。
重要
針對 Windows Phone 8.x 應用程式,從EnumerationCompleted、Added或Updated事件處理常式內呼叫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 |
發生于無線範圍內對等應用程式的 DisplayName 或 DiscoveryData 已變更時。 |