Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


IObservable<T>.Subscribe(IObserver<T>) Metoda

Definicja

Powiadamia dostawcę, że obserwator ma otrzymywać powiadomienia.

public IDisposable Subscribe (IObserver<out T> observer);

Parametry

observer
IObserver<T>

Obiekt, który ma otrzymywać powiadomienia.

Zwraca

IDisposable

Odwołanie do interfejsu, który umożliwia obserwatorom zaprzestanie odbierania powiadomień przed zakończeniem ich wysyłania przez dostawcę.

Przykłady

Poniższy przykład ilustruje metodę Subscribe aplikacji, która zgłasza informacje o szerokości geograficznej i długości geograficznej. Definiuje IList<T> obiekt kolekcji, który przechowuje odwołania do wszystkich obserwatorów. Zwraca również klasę prywatną o nazwie Unsubscriber , która implementuje IDisposable interfejs i umożliwia subskrybentom zaprzestanie odbierania powiadomień o zdarzeniach. Zobacz sekcję Przykład tematu, IObservable<T> aby zapoznać się z kompletnym przykładem.

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

Uwagi

Metoda Subscribe musi zostać wywołana w celu zarejestrowania obserwatora na potrzeby powiadomień wypychanych. Typowa implementacja Subscribe metody wykonuje następujące czynności:

  • Przechowuje odwołanie do obserwatora w obiekcie kolekcji, takim jak List<T> obiekt.

  • Zwraca odwołanie do interfejsu IDisposable . Dzięki temu obserwatorzy mogą anulować subskrypcję (czyli przestać otrzymywać powiadomienia) przed zakończeniem wysyłania ich przez dostawcę i wywołaniu metody subskrybenta OnCompleted .

W dowolnym momencie określone wystąpienie implementacji IObservable<T> jest odpowiedzialne za obsługę wszystkich subskrypcji i powiadamianie wszystkich subskrybentów. O ile dokumentacja dla określonej IObservable<T> implementacji nie wskazuje inaczej, obserwatorzy nie powinni przyjmować żadnych założeń dotyczących IObservable<T> implementacji, takich jak kolejność powiadomień otrzymywanych przez wielu obserwatorów.

Dotyczy

Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Zobacz też