Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Метод IObservable<T>.Subscribe (IObserver<T>)

 

Опубликовано: Октябрь 2016

Уведомляет поставщика о том, что наблюдатель должен получать уведомления.

Пространство имен:   System
Сборка:  mscorlib (в mscorlib.dll)

IDisposable Subscribe(
	IObserver<T> observer
)

Параметры

observer
Type: System.IObserver<T>

Объект, который должен получать уведомления.

Возвращаемое значение

Type: System.IDisposable

Ссылка на интерфейс, позволяющий наблюдателям прекратить получение уведомлений до того, как поставщик завершит их отправку.

Subscribe Метод должен вызываться для регистрации наблюдателя для Push-уведомлений. Типичная реализация Subscribe метод выполняет следующее:

  • Он содержит ссылку на наблюдатель в объекте коллекции, такие как List<T> объект.

  • Возвращает ссылку на IDisposable интерфейса. Это позволяет наблюдателям отменить подписку (то есть прекратить получение уведомлений) до поставщик содержал завершит отправку и вызывается подписчика OnCompleted метод.

В любой момент, конкретный экземпляр IObservable<T> реализация отвечает за обработку всех подписок и уведомление всех подписчиков. Если в документации по конкретной IObservable<T> реализации указывает, в противном случае наблюдатели следует делать никаких предположений о IObservable<T> реализации, такие как порядок уведомлений, которые получат несколько наблюдателей.

В следующем примере демонстрируется Subscribe метод для приложения, которое сообщает сведения широты и долготы. Он определяет IList<T> объект коллекции, который сохраняет ссылки на все наблюдатели. Он также возвращает закрытый класс с именем Unsubscriber , реализующий IDisposable интерфейса и позволяет подписчикам прекратить получение уведомлений о событиях. В разделе Пример IObservable<T> разделе полный пример.

private List<IObserver<Location>> observers;

public IDisposable Subscribe(IObserver<Location> observer) 
{
   if (! observers.Contains(observer)) 
      observers.Add(observer);
   return new Unsubscriber(observers, observer);
}

private class Unsubscriber : IDisposable
{
   private List<IObserver<Location>>_observers;
   private IObserver<Location> _observer;

   public Unsubscriber(List<IObserver<Location>> observers, IObserver<Location> observer)
   {
      this._observers = observers;
      this._observer = observer;
   }

   public void Dispose()
   {
      if (_observer != null && _observers.Contains(_observer))
         _observers.Remove(_observer);
   }
}

Универсальная платформа Windows
Доступно с 8
.NET Framework
Доступно с 4.0
Переносимая библиотека классов
Поддерживается в: переносимые платформы .NET
Windows Phone Silverlight
Доступно с 7.0
Windows Phone
Доступно с 8.1
Вернуться в начало
Показ: