İngilizce dilinde oku

Aracılığıyla paylaş


IObservable<T>.Subscribe(IObserver<T>) Yöntem

Tanım

Sağlayıcıya bir gözlemcinin bildirim alacağını bildirir.

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

Parametreler

observer
IObserver<T>

Bildirim alacak nesne.

Döndürülenler

IDisposable

Sağlayıcı göndermeyi bitirmeden önce gözlemcilerin bildirimleri almayı durdurmasını sağlayan bir arabirim başvurusu.

Örnekler

Aşağıdaki örnekte, enlem ve boylam bilgilerini bildiren bir uygulamanın yöntemi gösterilmektedir Subscribe . Tüm gözlemcilere başvuruları depolayan bir IList<T> koleksiyon nesnesi tanımlar. Ayrıca arabirimini uygulayan ve abonelerin IDisposable olay bildirimlerini almayı durdurmasını sağlayan adlı Unsubscriber bir özel sınıf döndürür. Tam örnek için konunun Örnek bölümüne IObservable<T> bakın.

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

Açıklamalar

Bir gözlemciyi Subscribe anında iletme tabanlı bildirimlere kaydetmek için yöntemi çağrılmalıdır. Yöntemin Subscribe tipik bir uygulaması aşağıdakileri yapar:

  • Gözlemciye başvuruyu nesne gibi List<T> bir koleksiyon nesnesinde depolar.

  • Bir arabirime IDisposable başvuru döndürür. Bu, sağlayıcı göndermeyi bitirmeden ve abonenin OnCompleted yöntemini çağırmadan önce gözlemcilerin abonelikten çıkmalarını (yani bildirimleri almayı durdurmalarını) sağlar.

Belirli bir zamanda, uygulamanın belirli bir IObservable<T> örneği tüm abonelikleri işlemek ve tüm aboneleri bilgilendirmek için sorumludur. Belirli IObservable<T> bir uygulamanın belgeleri aksini belirtmediği sürece, gözlemciler uygulama hakkında birden çok gözlemcinin IObservable<T> alacağı bildirimlerin sırası gibi bir varsayımda bulunmamalıdır.

Şunlara uygulanır

Ürün Sürümler
.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

Ayrıca bkz.