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
- Наследование
- Атрибуты
Требования к 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 постоянно проверяет наличие новых одноранговых приложений в диапазоне и удаляет устаревшие одноранговые приложения. Вы можете обновить список одноранговых приложений, обрабатывая событие Added , которое возникает при обнаружении нового однорангового приложения, и событие Removed , возникающее при удалении устаревшего однорангового приложения. PeerWatcher продолжает сканировать, пока вы не вызовете метод Stop или методы PeerFinder.FindAllPeersAsync или PeerFinder.ConnectAsync .
Важно!
Для приложений Windows Phone версии 8.x вызов PeerFinder.ConnectAsync из обработчика событий EnumerationCompleted, Added или Updated завершится ошибкой. Вместо этого вызывайте его за пределами этих обработчиков событий, например, если пользователь явно выбрал подключение к одноранговой сети.
Чтобы создать экземпляр класса 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 для однорангового приложения в диапазоне беспроводной связи. |