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


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 постоянно проверяет наличие новых одноранговых приложений в диапазоне и удаляет устаревшие одноранговые приложения. Вы можете обновить список одноранговых приложений, обрабатывая событие 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 для однорангового приложения в диапазоне беспроводной связи.

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

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