System.IObserver 接口

方法描述

提供用于接收基于推送的通知的机制。

语法定义(C# System.IObserver 接口 的用法)

public interface IObserver

构造函数

构造函数名称 构造函数描述

成员/方法

方法名称 方法描述
OnCompleted 通知观察者,提供程序已完成发送基于推送的通知。
OnError 通知观察者,提供程序遇到错误情况。
OnNext 向观察者提供新数据。

提示和注释

IObserver 和 IObservable 接口为基于推送的通知提供通用机制,也称为观察者设计模式。。 IObservable 接口表示发送通知(提供程序)的类;IObserver 接口表示接收通知(观察器)的类。 T 表示提供通知信息的类。

IObserver 实现通过将其本身的实例传递至提供程序 IObservable.Subscribe 方法来排列以接收来自提供程序(IObservable 实现)的通知。 此方法返回 IDisposable 对象,可用于在提供程序完成发送通知之前取消订阅观察器。

IObserver 接口定义了以下观察器必须实现的三种方法:

OnNext 方法,通常由提供程序调用来向观察器提供新的数据或状态信息。

OnError 方法,通常被提供程序调用来指示数据是不可用、无法访问、或已损坏,或提供程序遇到其他错误条件。

OnCompleted 方法,通常被提供程序调用以指示它已完成将通知发送给观察器。

System.IObserver 接口例子

下面的代码然后实例化提供程序和观察器。

using System;

class Program
{
   static void Main(string[] args)
   {
      // Define a provider and two observers.
      LocationTracker provider = new LocationTracker();
      LocationReporter reporter1 = new LocationReporter("FixedGPS");
      reporter1.Subscribe(provider);
      LocationReporter reporter2 = new LocationReporter("MobileGPS");
      reporter2.Subscribe(provider);

      provider.TrackLocation(new Location(47.6456, -122.1312));
      reporter1.Unsubscribe();
      provider.TrackLocation(new Location(47.6677, -122.1199));
      provider.TrackLocation(null);
      provider.EndTransmission();
   }
}
// The example displays output similar to the following:
//      FixedGPS: The current location is 47.6456, -122.1312
//      MobileGPS: The current location is 47.6456, -122.1312
//      MobileGPS: The current location is 47.6677, -122.1199
//      MobileGPS: The location cannot be determined.
//      The Location Tracker has completed transmitting data to MobileGPS.

继承层次结构

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

线程安全

版本信息

.NET Framework 受以下版本支持:4 .NET Framework Client Profile 受以下版本支持:4

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。