この記事では主に C# Rx の主要なインターフェイスを深く理解するための関連情報を紹介します。必要な方は、Rx
IObservable の主要なインターフェイスをより深く理解するためにC# を参照してください。 .NET Framework 4.0 の IObserver インターフェイス 基本
クラス ライブラリが利用可能であり、.NET 3.5、Silverlight 3 および 4、および JavaScript に インストールできるパッケージに含まれています。
IObservable/IObserverRx は、.NET Framework 4.0 の新しい IObservable インターフェイスによって抽象化された、非同期および
event ベースのデータ ソースをプッシュベースの監視可能なシーケンスとして公開します。 IObservable インターフェイスは、プルベースの列挙可能なコレクション用のよく知られた IEnumerable インターフェイスの複製です。 これは監視可能なデータ ソースを表し、関心のある人なら誰でもデータを送信できることを意味します。 このような関心のあるリスナーを表す依存する IObserver 実装のリストを維持し、状態の変更を自動的に通知します。
IObservableインターフェースの実装は、型Tの要素のコレクションとして見ることができます。したがって、IObservable は
のコレクションとして見ることができ、整数はサブスクライブされたオブザーバー
にプッシュされます。「Rxとは」で述べたように、プッシュされた
の残りの半分はIObserverインターフェースによって表されます。 、これは、購読によって関心のあるオブザーバーを登録することを表します。 その後、アイテムは、サブスクライブされているオブザーバブル シーケンスからオブザーバーに配信されます。
Observable コレクションから通知を受け取るには、IObservable の Subscribe メソッドを使用して、IObserver
を渡します。 このオブザーバーへの応答として、Subscribe メソッドはサブスクリプションへのハンドルとして IDisposable オブジェクトを返します。 これにより、完了時にサブスクリプションをクリーンアップできます。 このオブジェクトで Dispose を呼び出すと、オブザーバーがソースから切り離され、通知が配信されなくなります。 推測できるように、Rx では、.NET イベント モデルのように明示的にイベントのサブスクライブを解除する必要はありません。
オブザーバーは 3 つのパブリッシュ イベントをサポートしており、これらはインターフェイスのメソッドによって反映されます。 On
は、監視可能なデータ ソースに利用可能なデータがある場合、0 回以上呼び出すことができます。 たとえば、マウス移動イベントの監視可能なデータ ソースは、マウスが移動するたびに Point オブジェクトを発行できます。 他の 2 つのメソッドは、完了またはエラーを示すために使用されます。
IObservable / IObserver インターフェイスは以下にリストされています。
public interface IObservable<out T> { IDisposable Subscribe(IObserver<T> observer); } public interface IObserver<in T> { void OnCompleted();// Notifies the observer that the source has finished sending messages. void OnError(Exception error); // Notifies the observer about any exception or error. void OnNext(T value); // Pushes the next data value from the source to the observer. }
IObservable<int> source = Observable.Range(1, 5); //creates an observable sequence of 5 integers, starting from 1 IDisposable subscription = source.Subscribe( x => Console.WriteLine("OnNext: {0}", x), //prints out the value being pushed ex => Console.WriteLine("OnError: {0}", ex.Message), () => Console.WriteLine("OnCompleted"));
を記述して、フィルタリング、 グループ化 、合成などを実行できます。監視可能なシーケンスをより便利にするために、Rx アセンブリには多数のファクトリ LINQ 演算子 が用意されているため、これらを自分で実装する必要はありません。 これは、LINQ 演算子を使用して、監視可能なシーケンスのサブジェクトをクエリします。
警告:IObservable / IObserver インターフェイスを自分で実装する必要はありません。 Rx は、これらのインターフェイスの内部実装を提供し、Observable および Observer タイプによって提供されるさまざまな拡張メソッドを通じてそれらを公開します。 詳細については、「監視可能なシーケンスの作成とクエリ」トピックを参照してください
以上がC#Rx の主要なインターフェイスについての深い理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。