Subject<T> クラス
観察可能なシーケンスとオブザーバーの両方であるオブジェクトを表します。
継承階層
System.Object
System.Reactive.Subjects.Subject<T>
Namespace:System.Reactive.Subjects
アセンブリ: System.Reactive (System.Reactive.dll)
構文
'Declaration
Public NotInheritable Class Subject(Of T) _
Implements ISubject(Of T), ISubject(Of T, T), _
IObserver(Of T), IObservable(Of T), IDisposable
'Usage
Dim instance As Subject(Of T)
public sealed class Subject<T> : ISubject<T>,
ISubject<T, T>, IObserver<T>, IObservable<T>, IDisposable
generic<typename T>
public ref class Subject sealed : ISubject<T>,
ISubject<T, T>, IObserver<T>, IObservable<T>, IDisposable
[<SealedAttribute>]
type Subject<'T> =
class
interface ISubject<'T>
interface ISubject<'T, 'T>
interface IObserver<'T>
interface IObservable<'T>
interface IDisposable
end
JScript does not support generic types and methods.
型パラメーター
- T
型。
Subject<T> 型は、次のメンバーを公開します。
コンストラクター
名前 | 説明 | |
---|---|---|
件名<T> | Subject<T> クラスの新しいインスタンスを初期化します。 |
上
メソッド
名前 | 説明 | |
---|---|---|
Dispose | Subject<T> クラスの現在のインスタンスで使用されているすべてのリソースを解放し、すべてのオブザーバーの登録を解除します | |
[等しい] | ( オブジェクトから継承されます)。 | |
Finalize | ( オブジェクトから継承されます)。 | |
GetHashCode | ( オブジェクトから継承されます)。 | |
GetType | ( オブジェクトから継承されます)。 | |
MemberwiseClone | ( オブジェクトから継承されます)。 | |
OnCompleted | サブスクライブされているすべてのオブザーバーに、シーケンスの末尾を通知します。 | |
OnError | サブスクライブされているすべてのオブザーバーに例外を通知します。 | |
Onnext | サブスクライブされているすべてのオブザーバーに値を通知します。 | |
サブスクライブ | オブザーバーをサブジェクトにサブスクライブします。 | |
ToString | ( オブジェクトから継承されます)。 |
上
拡張メソッド
名前 | 説明 | |
---|---|---|
集計<T>(Func<T, T, T>) | オーバーロードされます。 監視可能なシーケンスにアキュムレータ関数を適用します。 ( Observable によって定義されます)。 | |
Aggregate<T, TAccumulate>(TAccumulate, Func<TAccumulate, T, TAccumulate>) | オーバーロードされます。 指定されたシード値を持つ監視可能なシーケンスにアキュムレータ関数を適用します。 ( Observable によって定義されます)。 | |
すべての<T> | 監視可能なシーケンスのすべての要素が条件を満たすかどうかを判断します。 ( Observable によって定義されます)。 | |
Amb<T> | 指定した 1 番目と 2 番目のシーケンスと最初に反応する観測可能なシーケンスを伝達します。 ( Observable によって定義されます)。 | |
および<T、TRight> | 両方の監視可能なシーケンスに使用可能な値がある場合に一致します。 ( Observable によって定義されます)。 | |
Any<T>() | オーバーロードされます。 監視可能なシーケンスに要素が含まれているかどうかを判断します。 ( Observable によって定義されます)。 | |
Any<T>(Func<T, Boolean>) | オーバーロードされます。 監視可能なシーケンスのすべての要素が条件を満たすかどうかを判断します。 ( Observable によって定義されます)。 | |
AsObservable<T> | 監視可能なシーケンスの ID を非表示にします。 ( Observable によって定義されます)。 | |
AsObserver<T> | オブザーバーの ID を非表示にします。 ( オブザーバーによって定義されます。 | |
AsQbservable<T> | 監視可能なシーケンスをクエリ可能な監視可能なシーケンスに変換します。 ( Qbservable によって定義されます。 | |
AssertEqual<T> | ( 拡張機能によって定義されます。 | |
Buffer<T>(Int32) | オーバーロードされます。 監視可能なシーケンスの各要素を、要素数情報に基づいて生成される連続する重複しないバッファーに示します。 ( Observable によって定義されます。 | |
Buffer<T>(TimeSpan) | オーバーロードされます。 監視可能シーケンスの各要素を、タイミング情報に基づいて生成される連続する重複しないバッファーに示します。 ( Observable によって定義されます。 | |
Buffer<T>(Int32, Int32) | オーバーロードされます。 監視可能なシーケンスの各要素を、要素数情報に基づいて生成される 0 個以上のバッファーに示します。 ( Observable によって定義されます。 | |
Buffer<T>(TimeSpan, IScheduler) | オーバーロードされます。 監視可能シーケンスの各要素を、タイミング情報に基づいて生成される連続する重複しないバッファーに示します。 ( Observable によって定義されます。 | |
Buffer<T>(TimeSpan, TimeSpan) | オーバーロードされます。 監視可能なシーケンスの各要素を、タイミング情報に基づいて生成される 0 個以上のバッファーに示します。 ( Observable によって定義されます。 | |
Buffer<T>(TimeSpan, Int32) | オーバーロードされます。 監視可能なシーケンスの各要素をバッファーに示します。バッファーが満杯になった場合、または特定の時間が経過したときに送信されます。 ( Observable によって定義されます。 | |
Buffer<T>(TimeSpan, TimeSpan, IScheduler) | オーバーロードされます。 監視可能なシーケンスの各要素を、タイミング情報に基づいて生成される 0 個以上のバッファーに示します。 ( Observable によって定義されます。 | |
Buffer<T>(TimeSpan, Int32, IScheduler) | オーバーロードされます。 監視可能なシーケンスの各要素をバッファーに示します。バッファーが満杯になった場合、または特定の時間が経過したときに送信されます。 ( Observable によって定義されます。 | |
Buffer<T,TBufferClosing>(Func<IObservable<TBufferClosing>>) | オーバーロードされます。 監視可能なシーケンスの各要素を連続する重複しないバッファーに示します。 ( Observable によって定義されます。 | |
Buffer<T、TBufferOpening、TBufferClosing>(IObservable<TBufferOpening>、Func<TBufferOpening、IObservable<TBufferClosing>>) | オーバーロードされます。 クエリ可能な監視可能なシーケンスの各要素を、重複しない連続するバッファーに示します。 ( Observable によって定義されます。 | |
Catch<T>(IObservable<T>) | オーバーロードされます。 次の監視可能なシーケンスで例外によって終了される監視可能なシーケンスを続行します。 ( Observable によって定義されます。 | |
Catch<T, TException>(Func<TException, IObservable<T>>) | オーバーロードされます。 ハンドラーによって生成された監視可能なシーケンスを使用して、指定された型の例外によって終了される監視可能なシーケンスを続行します。 ( Observable によって定義されます。 | |
CombineLatest<T、TSecond、TResult> | 監視可能なシーケンスの 1 つが要素を生成するたびに、セレクター関数を使用して、2 つの監視可能なシーケンスを 1 つの監視可能なシーケンスにマージします。 ( Observable によって定義されます。 | |
Concat<T> | 2 つの監視可能なシーケンスを連結します。 ( Observable によって定義されます。 | |
T>(T) を<含む | オーバーロードされます。 既定の等値比較子を使用して、監視可能なシーケンスに指定された要素が含まれているかどうかを判断します。 ( Observable によって定義されます。 | |
<T>(T, IEqualityComparer<T>) が含まれています | オーバーロードされます。 指定した System.Collections.Generic.IEqualityComparer< を使用して、監視可能なシーケンスに指定された要素が含まれているかどうかを判断します。T>. ( Observable によって定義されます。 | |
カウント<T> | 観測可能なシーケンス内の要素の合計数を表す Int32 を返します。 ( Observable によって定義されます。 | |
DefaultIfEmpty<T>() | オーバーロードされます。 シーケンスが空の場合は、指定したシーケンスの要素、またはシングルトン シーケンス内の型パラメーターの既定値を返します。 ( Observable によって定義されます。 | |
DefaultIfEmpty<T>(T) | オーバーロードされます。 シーケンスが空の場合は、指定したシーケンスの要素、またはシングルトン シーケンス内の型パラメーターの既定値を返します。 ( Observable によって定義されます。 | |
Delay<T>(TimeSpan) | オーバーロードされます。 指定した source と dueTime を使用して、期限で監視可能なシーケンスを示します。 ( Observable によって定義されます。 | |
Delay<T>(DateTimeOffset) | オーバーロードされます。 指定した source と dueTime を使用して、期限で監視可能なシーケンスを示します。 ( Observable によって定義されます。 | |
Delay<T>(TimeSpan, IScheduler) | オーバーロードされます。 指定したソース、dueTime、およびスケジューラを使用して、期限によって監視可能なシーケンスを示します。 ( Observable によって定義されます。 | |
Delay<T>(DateTimeOffset, IScheduler) | オーバーロードされます。 指定したソース、dueTime、およびスケジューラを使用して、期限によって監視可能なシーケンスを示します。 ( Observable によって定義されます。 | |
Distinct<T>() | オーバーロードされます。 指定したソースを持つ個別の要素のみを含む監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Distinct<T>(IEqualityComparer<T>) | オーバーロードされます。 比較子に従って個別の要素のみを含む監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Distinct<T,TKey>(Func<T, TKey>) | オーバーロードされます。 keySelector に従って個別の要素のみを含む監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Distinct<T,TKey>(Func<T, TKey>, IEqualityComparer<TKey>) | オーバーロードされます。 keySelector に従って個別の要素のみを含む監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
DistinctUntilChanged<T>() | オーバーロードされます。 指定したソースを持つ個別の連続する要素のみを含む監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
DistinctUntilChanged<T>(IEqualityComparer<T>) | オーバーロードされます。 比較子に従って個別の連続する要素のみを含む監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
DistinctUntilChanged<T,TKey>(Func<T, TKey>) | オーバーロードされます。 keySelector に従って、個別の連続する要素のみを含む監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
DistinctUntilChanged<T,TKey>(Func<T, TKey>, IEqualityComparer<TKey>) | オーバーロードされます。 keySelector と比較子に従って、個別の連続する要素のみを含む監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Do<T>(Action<T>) | オーバーロードされます。 監視可能なシーケンス内の各要素に対してアクションを呼び出します。 ( Observable によって定義されます。 | |
Do<T>(IObserver<T>) | オーバーロードされます。 監視可能シーケンス内の各要素に対してアクションを呼び出し、監視可能シーケンスの例外的な終了時にアクションを呼び出します。 ( Observable によって定義されます。 | |
Do<T>(Action<T>, Action) | オーバーロードされます。 監視可能なシーケンス内の各要素に対してアクションを呼び出し、監視可能なシーケンスの正常な終了時にアクションを呼び出します。 ( Observable によって定義されます。 | |
Do<T>(Action<T>, Action<Exception>) | オーバーロードされます。 監視可能シーケンス内の各要素に対してアクションを呼び出し、監視可能シーケンスの例外的な終了時にアクションを呼び出します。 ( Observable によって定義されます。 | |
Do<T>(Action<T>, Action<Exception>, Action) | オーバーロードされます。 監視可能なシーケンス内の各要素に対してアクションを呼び出し、監視可能なシーケンスの正常または例外的な終了時にアクションを呼び出します。 ( Observable によって定義されます。 | |
ElementAt<T> | シーケンス内の指定されたインデックス位置にある要素を返します。 ( Observable によって定義されます。 | |
ElementAtOrDefault<T> | シーケンス内の指定したインデックス位置にある要素を返します。インデックスが範囲外の場合は既定値を返します。 ( Observable によって定義されます。 | |
Finally<T> | ソース監視可能シーケンスが正常に終了した後、または例外によって、指定されたアクションを呼び出します。 ( Observable によって定義されます。 | |
最初の<T>() | オーバーロードされます。 指定したソースを持つ監視可能なシーケンスの最初の要素を返します。 ( Observable によって定義されます)。 | |
First<T>(Func<T, Boolean>) | オーバーロードされます。 述語に一致する監視可能なシーケンスの最初の要素を返します。 ( Observable によって定義されます)。 | |
FirstOrDefault<T>() | オーバーロードされます。 監視可能なシーケンスの最初の要素を返します。値が見つからない場合は既定値を返します。 ( Observable によって定義されます)。 | |
FirstOrDefault<T>(Func<T, Boolean>) | オーバーロードされます。 述語と一致する監視可能なシーケンスの最初の要素を返します。値が見つからない場合は既定値を返します。 ( Observable によって定義されます)。 | |
Foo<T、R> | ( MyExt によって定義されます)。 | |
ForEach<T> | 監視可能シーケンス内の各要素に対してアクションを呼び出し、シーケンスが終了するまでブロックします。 ( Observable によって定義されます)。 | |
GetEnumerator<T> | 監視可能なシーケンスのすべての値を列挙する列挙子を返します。 ( Observable によって定義されます)。 | |
GroupBy<T,TKey>(Func<T, TKey>) | オーバーロードされます。 指定したキー セレクター関数に従って、監視可能なシーケンスの要素をグループ化します。 ( Observable によって定義されます)。 | |
GroupBy<T,TKey>(Func<T, TKey>, IEqualityComparer<TKey>) | オーバーロードされます。 指定したキー セレクター関数と比較子に従って、監視可能なシーケンスの要素をグループ化します。 ( Observable によって定義されます)。 | |
GroupBy<T、TKey、TElement>(Func<T、TKey>、Func<T、TElement>) | オーバーロードされます。 監視可能なシーケンスの要素をグループ化し、指定した関数を使用して結果の要素を選択します。 ( Observable によって定義されます)。 | |
GroupBy<T、TKey、TElement>(Func<T、TKey>、Func<T、TElement>、IEqualityComparer<TKey>) | オーバーロードされます。 指定したキー セレクター関数と比較子に従って監視可能なシーケンスの要素をグループ化し、指定した関数を使用して結果の要素を選択します。 ( Observable によって定義されます)。 | |
GroupByUntil<T, TKey, TDuration>(Func<T, TKey>, Func<IGroupedObservable<TKey, T>, IObservable<TDuration>>) | オーバーロードされます。 指定したキー セレクター関数に従って、監視可能なシーケンスの要素をグループ化します。 ( Observable によって定義されます)。 | |
GroupByUntil<T, TKey, TDuration>(Func<T, TKey>, Func<IGroupedObservable<TKey, T>, IObservable<TDuration>>, IEqualityComparer<TKey>) | オーバーロードされます。 指定したキー セレクター関数と比較子に従って、監視可能なシーケンスの要素をグループ化します。 ( Observable によって定義されます)。 | |
GroupByUntil<T,TKey, TElement, TDuration>(Func<T, TKey>, Func<T, TElement>, Func<IGroupedObservable<TKey, TElement>, IObservable<TDuration>>) | オーバーロードされます。 指定したキー セレクター関数に従って監視可能なシーケンスの要素をグループ化し、指定した関数を使用して結果の要素を選択します。 ( Observable によって定義されます)。 | |
GroupByUntil<T,TKey, TElement, TDuration>(Func<T, TKey>, Func<T, TElement>, Func<IGroupedObservable<TKey, TElement>, IObservable<TDuration>>, IEqualityComparer<TKey>) | オーバーロードされます。 指定したキー セレクター関数と比較子に従って監視可能なシーケンスの要素をグループ化し、指定した関数を使用して結果の要素を選択します。 ( Observable によって定義されます)。 | |
GroupJoin<T、TRight、TLeftDuration、TRightDuration、TResult> | 重複する期間に基づいて 2 つのシーケンスの要素を関連付け、結果をグループ化します。 ( Observable によって定義されます)。 | |
IgnoreElements<T> | 終了メッセージのみを残して、監視可能なシーケンス内のすべての値を無視します。 ( Observable によって定義されます)。 | |
結合<T、TRight、TLeftDuration、TRightDuration、TResult> | 重複する期間に基づいて、2 つのシーケンスの要素を関連付けます。 ( Observable によって定義されます)。 | |
Last<T>() | オーバーロードされます。 指定したソースを持つ監視可能なシーケンスの最後の要素を返します。 ( Observable によって定義されます)。 | |
Last<T>(Func<T, Boolean>) | オーバーロードされます。 述語に一致する監視可能なシーケンスの最後の要素を返します。 ( Observable によって定義されます)。 | |
LastOrDefault<T>() | オーバーロードされます。 監視可能なシーケンスの最後の要素を返します。値が見つからない場合は既定値を返します。 ( Observable によって定義されます)。 | |
LastOrDefault<T>(Func<T, Boolean>) | オーバーロードされます。 述語と一致する監視可能なシーケンスの最後の要素を返します。値が見つからない場合は既定値を返します。 ( Observable によって定義されます)。 | |
最新<の T> | 監視可能なシーケンス内の最新の値をサンプリングします。 ( Observable によって定義されます。 | |
LongCount<T> | 監視可能なシーケンス内の要素の合計数を表す Int64 を返します。 ( Observable によって定義されます。 | |
<具体化 T> | 監視可能なシーケンスの暗黙的な通知を明示的な通知値として具体化します。 ( Observable によって定義されます。 | |
最大<T>() | オーバーロードされます。 監視可能なシーケンス内の最大要素を返します。 ( Observable によって定義されます。 | |
最大<T>(IComparer<T>) | オーバーロードされます。 指定した比較子に従って、監視可能なシーケンスの最大値を返します。 ( Observable によって定義されます。 | |
MaxBy<T、TKey>(Func<T、TKey>) | オーバーロードされます。 最大キー値を持つ監視可能なシーケンス内の要素を返します。 ( Observable によって定義されます。 | |
MaxBy<T、TKey>(Func<T、TKey>、IComparer<TKey>) | オーバーロードされます。 最大キー値を持つ監視可能なシーケンス内の要素を返します。 ( Observable によって定義されます。 | |
マージ<T>(IObservable<T>) | オーバーロードされます。 監視可能なシーケンスの監視可能なシーケンスを監視可能なシーケンスにマージします。 ( Observable によって定義されます。 | |
Merge<T>(IObservable<T>, IScheduler) | オーバーロードされます。 2 つの監視可能なシーケンスを 1 つの監視可能なシーケンスにマージします。 ( Observable によって定義されます。 | |
Min<T>() | オーバーロードされます。 監視可能なシーケンス内の最小要素を返します。 ( Observable によって定義されます。 | |
Min<T>(IComparer<T>) | オーバーロードされます。 指定した比較子に従って、監視可能なシーケンスの最小値を返します。 ( Observable によって定義されます。 | |
MinBy<T、TKey>(Func<T、TKey>) | オーバーロードされます。 最小キー値を持つ監視可能なシーケンス内の要素を返します。 ( Observable によって定義されます。 | |
MinBy<T、TKey>(Func<T、TKey>、IComparer<TKey>) | オーバーロードされます。 指定した比較子に従って、最小キー値を持つ監視可能なシーケンス内の要素を返します。 ( Observable によって定義されます。 | |
MostRecent<T> | 監視可能なシーケンス内の最新の値をサンプリングします。 ( Observable によって定義されます。 | |
Multicast<T, TResult>(ISubject<T, TResult>) | オーバーロードされます。 接続時にソース シーケンスが指定したサブジェクトに結果をプッシュする、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
マルチキャスト<T、TIntermediate、TResult>(Func<ISubject<T、TIntermediate>>、Func<IObservable<TIntermediate>、IObservable<TResult>>) | オーバーロードされます。 セレクター関数内でソース シーケンスをマルチキャストすることによって生成されるシーケンスの要素を含む監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
次の<T> | 監視可能なシーケンス内の から、次の値 (バッファリングなしでブロック) をサンプリングします。 ( Observable によって定義されます。 | |
ObserveOn<T>(SynchronizationContext) | オーバーロードされます。 指定した同期コンテキストでオブザーバーに非同期的に通知します。 ( Observable によって定義されます。 | |
ObserveOn<T>(Control) | オーバーロードされます。 ( ControlObservable によって定義されます。 | |
ObserveOn<T>(Dispatcher) | オーバーロードされます。 ( DispatcherObservable によって定義されます)。 | |
ObserveOn<T>(DispatcherScheduler) | オーバーロードされます。 ( DispatcherObservable によって定義されます)。 | |
ObserveOn<T>(IScheduler) | オーバーロードされます。 指定したスケジューラでオブザーバーに非同期的に通知します。 ( Observable によって定義されます。 | |
ObserveOnDispatcher<T> | ( DispatcherObservable によって定義されます)。 | |
OnErrorResumeNext<T> | 正常に終了するか、次の監視可能なシーケンスで例外によって終了される監視可能なシーケンスを続行します。 ( Observable によって定義されます。 | |
発行<T>() | オーバーロードされます。 基になるシーケンスに 1 つのサブスクリプションを共有する、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
発行<T>(T) | オーバーロードされます。 基になるシーケンスに 1 つのサブスクリプションを共有し、initialValue で始まる、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Publish<T, TResult>(Func<IObservable<T>, IObservable<TResult>>) | オーバーロードされます。 基になるシーケンスに 1 つのサブスクリプションを共有する接続可能な監視可能なシーケンスでセレクターを呼び出した結果である監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Publish<T, TResult>(Func<IObservable<T>, IObservable<TResult>>, T) | オーバーロードされます。 基になるシーケンスに 1 つのサブスクリプションを共有し、initialValue で始まる、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
PublishLast<T>() | オーバーロードされます。 最後の通知のみを含む基になるシーケンスに 1 つのサブスクリプションを共有する、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
PublishLast<T, TResult>(Func<IObservable<T>, IObservable<TResult>>) | オーバーロードされます。 最後の通知のみを含む基になるシーケンスに 1 つのサブスクリプションを共有する接続可能な監視可能なシーケンスでセレクターを呼び出した結果である監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
繰り返し<T>() | オーバーロードされます。 監視可能なシーケンスを無期限に繰り返します。 ( Observable によって定義されます。 | |
繰り返し<T>(Int32) | オーバーロードされます。 監視可能なシーケンスを無期限に繰り返します。 ( Observable によって定義されます。 | |
再生<T>() | オーバーロードされます。 すべての通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
再生<T>(TimeSpan) | オーバーロードされます。 ウィンドウ内のすべての通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
再生<T>(Int32) | オーバーロードされます。 bufferSize 通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T>(IScheduler) | オーバーロードされます。 すべての通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T>(TimeSpan, IScheduler) | オーバーロードされます。 ウィンドウ内のすべての通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T>(Int32, IScheduler) | オーバーロードされます。 bufferSize 通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
再生<T>(Int32, TimeSpan) | オーバーロードされます。 ウィンドウ内の bufferSize 通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T>(Int32, TimeSpan, IScheduler) | オーバーロードされます。 ウィンドウ内の bufferSize 通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する、接続可能な監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T, TResult>(Func<IObservable<T>, IObservable<TResult>>) | オーバーロードされます。 基になるシーケンスに 1 つのサブスクリプションを共有し、初期値で始まる、接続可能な監視可能なシーケンスでセレクターを呼び出した結果である監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T, TResult>(Func<IObservable<T>, IObservable<TResult>>, IScheduler) | オーバーロードされます。 すべての通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する接続可能な監視可能なシーケンスでセレクターを呼び出した結果である監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T, TResult>(Func<IObservable<T>, IObservable<TResult>>, TimeSpan) | オーバーロードされます。 ウィンドウ内のすべての通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する接続可能な監視可能なシーケンスでセレクターを呼び出した結果である監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T, TResult>(Func<IObservable<T>, IObservable<TResult>>, Int32) | オーバーロードされます。 bufferSize 通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する接続可能な監視可能なシーケンスでセレクターを呼び出した結果である監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T, TResult>(Func<IObservable<T>, IObservable<TResult>>, TimeSpan, IScheduler) | オーバーロードされます。 ウィンドウ内のすべての通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する接続可能な監視可能なシーケンスでセレクターを呼び出した結果である監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T, TResult>(Func<IObservable<T>, IObservable<TResult>>, Int32, IScheduler) | オーバーロードされます。 bufferSize 通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する接続可能な監視可能なシーケンスでセレクターを呼び出した結果である監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T, TResult>(Func<IObservable<T>, IObservable<TResult>>, Int32, TimeSpan) | オーバーロードされます。 ウィンドウ内の bufferSize 通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する接続可能な監視可能なシーケンスでセレクターを呼び出した結果である監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Replay<T, TResult>(Func<IObservable<T>, IObservable<TResult>>, Int32, TimeSpan, IScheduler) | オーバーロードされます。 ウィンドウ内の bufferSize 通知を再生する基になるシーケンスに 1 つのサブスクリプションを共有する接続可能な監視可能なシーケンスでセレクターを呼び出した結果である監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
再試行<T>() | オーバーロードされます。 ソースの監視可能なシーケンスが正常に終了するまで繰り返します。 ( Observable によって定義されます。 | |
再試行<T>(Int32) | オーバーロードされます。 ソースの監視可能なシーケンスが正常に終了するまで繰り返します。 ( Observable によって定義されます。 | |
サンプル<T>(TimeSpan) | オーバーロードされます。 各間隔で観測可能なシーケンスをサンプリングします。 ( Observable によって定義されます。 | |
サンプル<T>(TimeSpan, IScheduler) | オーバーロードされます。 指定したソース、間隔、スケジューラを使用して、各間隔で監視可能なシーケンスをサンプリングします。 ( Observable によって定義されます。 | |
サンプル<T、TSample>(IObservable<TSample>) | オーバーロードされます。 指定したソースとサンプラーを使用して、サンプリング ティックで監視可能なシーケンスをサンプリングします。 ( Observable によって定義されます。 | |
スキャン<T>(Func<T, T, T>) | オーバーロードされます。 監視可能なシーケンスにアキュムレータ関数を適用し、指定されたソースとアキュムレータを使用して各中間結果を返します。 ( Observable によって定義されます。 | |
スキャン<T、TAccumulate>(TAccumulate、Func<TAccumulate、T、TAccumulate>) | オーバーロードされます。 監視可能なシーケンスにアキュムレータ関数を適用し、指定されたソース、シード、アキュムレータを使用して各中間結果を返します。 ( Observable によって定義されます。 | |
T、TResult(Func<T、TResult>) を選択<します> | オーバーロードされます。 監視可能なシーケンスの各要素を、指定したソースとセレクターを使用して新しいフォームに投影します。 ( Observable によって定義されます。 | |
T、TResult(Func<T、Int32、TResult>) を選択<します> | オーバーロードされます。 指定したソースとセレクターに要素のインデックスを組み込むことで、監視可能なシーケンスの各要素を新しいフォームに投影します。 ( Observable によって定義されます。 | |
SelectMany<T,TOther>(IObservable<TOther>) | オーバーロードされます。 監視可能なシーケンスの各要素を監視可能なシーケンスに投影し、結果として得られる観測可能なシーケンスを 1 つの監視可能なシーケンスにフラット化します。 ( Observable によって定義されます。 | |
SelectMany<T, TResult>(Func<T, IObservable<TResult>>) | オーバーロードされます。 監視可能なシーケンスの各要素を監視可能なシーケンスに投影し、結果として得られる観測可能なシーケンスを 1 つの監視可能なシーケンスにフラット化します。 ( Observable によって定義されます。 | |
SelectMany<T, TResult>(Func<T, IEnumerable<TResult>>) | オーバーロードされます。 監視可能なシーケンスの各要素を監視可能なシーケンスに投影し、結果として得られる観測可能なシーケンスを 1 つの監視可能なシーケンスにフラット化します。 ( Observable によって定義されます。 | |
SelectMany<T, TResult>(Func<T, IObservable<TResult>>, Func<Exception, IObservable<TResult>>, Func<IObservable<TResult>>) | オーバーロードされます。 監視可能なシーケンスの各要素を監視可能なシーケンスに投影し、結果として得られる観測可能なシーケンスを 1 つの監視可能なシーケンスにフラット化します。 ( Observable によって定義されます。 | |
SelectMany<T,TCollection, TResult>(Func<T, IEnumerable<TCollection>>, Func<T, TCollection, TResult>) | オーバーロードされます。 監視可能なシーケンスの各要素を監視可能なシーケンスに投影し、結果として得られる観測可能なシーケンスを 1 つの監視可能なシーケンスにフラット化します。 ( Observable によって定義されます。 | |
SelectMany<T、TCollection、TResult>(Func<T、IObservable<TCollection>>、Func<T、TCollection、TResult>) | オーバーロードされます。 監視可能なシーケンスの各要素を監視可能なシーケンスに投影し、結果として得られる観測可能なシーケンスを 1 つの監視可能なシーケンスにフラット化します。 ( Observable によって定義されます。 | |
SequenceEqual<T>(IObservable<T>) | オーバーロードされます。 要素をペアで比較して、2 つのシーケンスが等しいかどうかを判断します。 ( Observable によって定義されます。 | |
SequenceEqual<T>(IObservable<T>, IEqualityComparer<T>) | オーバーロードされます。 指定した等値比較子を使用して要素をペアで比較することで、2 つのシーケンスが等しいかどうかを判断します。 ( Observable によって定義されます。 | |
単一<T>() | オーバーロードされます。 監視可能なシーケンスの唯一の要素を返し、監視可能なシーケンスに要素が 1 つも存在しない場合は例外をスローします。 ( Observable によって定義されます。 | |
単一<T>(Func<T, Boolean>) | オーバーロードされます。 述語に一致する監視可能なシーケンスの唯一の要素を返し、監視可能なシーケンスに要素が 1 つしかない場合は例外をスローします。 ( Observable によって定義されます。 | |
SingleOrDefault<T>() | オーバーロードされます。 監視可能なシーケンスの唯一の要素を返します。監視可能なシーケンスが空の場合は既定値を返します。 ( Observable によって定義されます。 | |
SingleOrDefault<T>(Func<T, Boolean>) | オーバーロードされます。 述語に一致する監視可能なシーケンスの唯一の要素を返します。値が見つからない場合は既定値を返します。 ( Observable によって定義されます。 | |
スキップ<T> | 監視可能なシーケンス内の指定された数の値をバイパスし、残りの値を返します。 ( Observable によって定義されます。 | |
SkipLast<T> | 監視可能なシーケンスの末尾にある指定した数の要素をバイパスします。 ( Observable によって定義されます。 | |
SkipUntil<T、TOther> | 他の監視可能なシーケンスが値を生成した後にのみ、ソース監視可能シーケンスから値を返します。 ( Observable によって定義されます。 | |
SkipWhile<T>(Func<T, Boolean>) | オーバーロードされます。 指定した条件が true である限り、監視可能なシーケンス内の値をバイパスし、残りの値を返します。 ( Observable によって定義されます。 | |
SkipWhile<T>(Func<T, Int32, Boolean>) | オーバーロードされます。 指定した条件が true である限り、監視可能なシーケンス内の値をバイパスし、残りの値を返します。 ( Observable によって定義されます。 | |
StartWith<T>T[]) | オーバーロードされます。 指定したソースと値を持つ監視可能なシーケンスに値のシーケンスを付加します。 ( Observable によって定義されます。 | |
StartWith<T>(IScheduler, T[]) | オーバーロードされます。 指定したソース、スケジューラ、および値を使用して、監視可能なシーケンスに値のシーケンスを付加します。 ( Observable によって定義されます。 | |
Subscribe<T>() | オーバーロードされます。 指定したソースで監視可能なシーケンスを評価します。 ( ObservableExtensions によって定義されます)。 | |
Subscribe<T>(Action<T>) | オーバーロードされます。 監視可能なシーケンスに要素ハンドラーをサブスクライブします。 ( ObservableExtensions によって定義されます)。 | |
Subscribe<T>(Action<T>, Action<Exception>) | オーバーロードされます。 要素ハンドラーと例外ハンドラーを監視可能なシーケンスにサブスクライブします。 ( ObservableExtensions によって定義されます)。 | |
Subscribe<T>(Action<T>, Action) | オーバーロードされます。 要素ハンドラーと完了ハンドラーを監視可能なシーケンスにサブスクライブします。 ( ObservableExtensions によって定義されます)。 | |
Subscribe<T>(Action<T>, Action<Exception>, Action) | オーバーロードされます。 要素ハンドラー、例外ハンドラー、および完了ハンドラーを監視可能なシーケンスにサブスクライブします。 ( ObservableExtensions によって定義されます)。 | |
SubscribeOn<T>(SynchronizationContext) | オーバーロードされます。 指定した同期コンテキストでオブザーバーを非同期的にサブスクライブおよびサブスクライブ解除します。 ( Observable によって定義されます。 | |
SubscribeOn<T>(Control) | オーバーロードされます。 ( ControlObservable によって定義されます。 | |
SubscribeOn<T>(Dispatcher) | オーバーロードされます。 ( DispatcherObservable によって定義されます)。 | |
SubscribeOn<T>(DispatcherScheduler) | オーバーロードされます。 ( DispatcherObservable によって定義されます)。 | |
SubscribeOn<T>(IScheduler) | オーバーロードされます。 指定したスケジューラでオブザーバーを非同期的にサブスクライブおよびサブスクライブ解除します。 ( Observable によって定義されます。 | |
SubscribeOnDispatcher<T> | ( DispatcherObservable によって定義されます)。 | |
同期<T>() | オーバーロードされます。 監視可能なシーケンスを同期します。 ( Observable によって定義されます。 | |
Synchronize<T>(Object) | オーバーロードされます。 監視可能なシーケンスを同期します。 ( Observable によって定義されます。 | |
Take<T> | 監視可能なシーケンスの先頭から、指定した数の連続した値を返します。 ( Observable によって定義されます。 | |
TakeLast<T> | 監視可能なシーケンスの末尾から、指定した数の連続する要素を返します。 ( Observable によって定義されます。 | |
TakeUntil<T、TOther> | 他の監視可能なシーケンスが値を生成するまで、ソースの監視可能なシーケンスから値を返します。 ( Observable によって定義されます。 | |
TakeWhile<T>(Func<T, Boolean>) | オーバーロードされます。 指定した条件が true である限り、監視可能なシーケンスから値を返し、残りの値をスキップします。 ( Observable によって定義されます。 | |
TakeWhile<T>(Func<T, Int32, Boolean>) | オーバーロードされます。 指定した条件が true である限り、監視可能なシーケンスから値を返し、残りの値をスキップします。 ( Observable によって定義されます。 | |
次に<、T、TResult> | 監視可能なシーケンスに使用可能な値があり、その値を投影する場合に一致します。 ( Observable によって定義されます。 | |
スロットル<T>(TimeSpan) | オーバーロードされます。 指定した source と dueTime で期限前に別の値が続く、監視可能なシーケンスの値を無視します。 ( Observable によって定義されます。 | |
スロットル<T>(TimeSpan, IScheduler) | オーバーロードされます。 指定したソース、dueTime、およびスケジューラを使用して、期限前に別の値が続く監視可能なシーケンスの値を無視します。 ( Observable によって定義されます。 | |
TimeInterval<T>() | オーバーロードされます。 指定したソースを持つ監視可能なシーケンス内の連続する値間の時間間隔を記録します。 ( Observable によって定義されます。 | |
TimeInterval<T>(IScheduler) | オーバーロードされます。 指定したソースとスケジューラを使用して、監視可能なシーケンス内の連続する値間の時間間隔を記録します。 ( Observable によって定義されます。 | |
Timeout<T>(TimeSpan) | オーバーロードされます。 dueTime が経過した場合は、監視可能なシーケンスまたは TimeoutException を返します。 ( Observable によって定義されます。 | |
Timeout<T>(DateTimeOffset) | オーバーロードされます。 dueTime が経過した場合は、監視可能なシーケンスまたは TimeoutException を返します。 ( Observable によって定義されます。 | |
Timeout<T>(TimeSpan, IObservable<T>) | オーバーロードされます。 dueTime が経過した場合は、ソースの監視可能なシーケンスまたは他の監視可能なシーケンスを返します。 ( Observable によって定義されます。 | |
Timeout<T>(DateTimeOffset, IObservable<T>) | オーバーロードされます。 dueTime が経過した場合は、監視可能なシーケンスまたは TimeoutException を返します。 ( Observable によって定義されます。 | |
Timeout<T>(TimeSpan, IScheduler) | オーバーロードされます。 dueTime が経過した場合は、監視可能なシーケンスまたは TimeoutException を返します。 ( Observable によって定義されます。 | |
Timeout<T>(DateTimeOffset, IScheduler) | オーバーロードされます。 dueTime が経過した場合は、監視可能なシーケンスまたは TimeoutException を返します。 ( Observable によって定義されます)。 | |
Timeout<T>(TimeSpan, IObservable<T>, IScheduler) | オーバーロードされます。 dueTime が経過した場合は、ソース監視可能シーケンスまたは他の監視可能なシーケンスを返します。 ( Observable によって定義されます)。 | |
Timeout<T>(DateTimeOffset, IObservable<T>, IScheduler) | オーバーロードされます。 dueTime が経過した場合は、ソース監視可能シーケンスまたは他の監視可能なシーケンスを返します。 ( Observable によって定義されます)。 | |
Timestamp<T>() | オーバーロードされます。 指定したソースを持つ監視可能なシーケンス内の各値のタイムスタンプを記録します。 ( Observable によって定義されます)。 | |
Timestamp<T>(IScheduler) | オーバーロードされます。 指定したソースとスケジューラを使用して、監視可能なシーケンス内の各値のタイムスタンプを記録します。 ( Observable によって定義されます)。 | |
ToArray<T> | 監視可能なシーケンスから配列を作成します。 ( Observable によって定義されます)。 | |
ToDictionary<T, TKey>(Func<T, TKey>) | オーバーロードされます。 指定したキー セレクター関数に従って、監視可能なシーケンスからディクショナリを作成します。 ( Observable によって定義されます)。 | |
ToDictionary<T, TKey>(Func<T, TKey>, IEqualityComparer<TKey>) | オーバーロードされます。 指定したキー セレクター関数と比較子に従って、監視可能なシーケンスからディクショナリを作成します。 ( Observable によって定義されます)。 | |
ToDictionary<T、TKey、TElement>(Func<T、TKey>、Func<T、TElement>) | オーバーロードされます。 指定したキー セレクター関数と要素セレクター関数に従って、監視可能なシーケンスからディクショナリを作成します。 ( Observable によって定義されます)。 | |
ToDictionary<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>, IEqualityComparer<TKey>) | オーバーロードされます。 指定したキー セレクター関数、比較子、および要素セレクター関数に従って、監視可能なシーケンスからディクショナリを作成します。 ( Observable によって定義されます)。 | |
ToEnumerable<T> | 監視可能なシーケンスを列挙可能なシーケンスに変換します。 ( Observable によって定義されます)。 | |
ToEvent<T> | 指定したソースを持つ .NET イベントを持つオブジェクトとして、監視可能なシーケンスを公開します。 ( Observable によって定義されます)。 | |
ToList<T> | 監視可能なシーケンスからリストを作成します。 ( Observable によって定義されます)。 | |
ToLookup<T,TKey>(Func<T, TKey>) | オーバーロードされます。 指定したキー セレクター関数に従って、監視可能なシーケンスから参照を作成します。 ( Observable によって定義されます)。 | |
ToLookup<T,TKey>(Func<T, TKey>, IEqualityComparer<TKey>) | オーバーロードされます。 指定したキー セレクター関数と比較子に従って、監視可能なシーケンスからルックアップを作成します。 ( Observable によって定義されます)。 | |
ToLookup<T、TKey、TElement>(Func<T、TKey>、Func<T、TElement>) | オーバーロードされます。 指定したキー セレクター関数と要素セレクター関数に従って、監視可能なシーケンスから参照を作成します。 ( Observable によって定義されます)。 | |
ToLookup<T、TKey、TElement>(Func<T、TKey>、Func<T、TElement>、IEqualityComparer<TKey>) | オーバーロードされます。 指定したキー セレクター関数、比較子、および要素セレクター関数に従って、監視可能なシーケンスから参照を作成します。 ( Observable によって定義されます)。 | |
ToNotifier<T> | オブザーバーから通知コールバックを作成します。 ( オブザーバーによって定義されます。 | |
ToTask<T>() | オーバーロードされます。 監視可能シーケンスの最後の値を含むタスクを返します。 ( TaskObservableExtensions によって定義されます)。 | |
ToTask<T>(Object) | オーバーロードされます。 監視可能シーケンスの最後の値を含むタスクを返します。 ( TaskObservableExtensions によって定義されます)。 | |
ToTask<T>(CancellationToken) | オーバーロードされます。 監視可能シーケンスの最後の値を含むタスクを返します。 ( TaskObservableExtensions によって定義されます)。 | |
ToTask<T>(CancellationToken, Object) | オーバーロードされます。 監視可能シーケンスの最後の値を含むタスクを返します。 ( TaskObservableExtensions によって定義されます)。 | |
Where<T>(Func<T, Boolean>) | オーバーロードされます。 述語に基づいて監視可能なシーケンスの要素をフィルター処理します。 ( Observable によって定義されます)。 | |
Where<T>(Func<T, Int32, Boolean>) | オーバーロードされます。 要素のインデックスを組み込むことによって、述語に基づいて監視可能なシーケンスの要素をフィルター処理します。 ( Observable によって定義されます)。 | |
Window<T>(Int32) | オーバーロードされます。 監視可能シーケンスの各要素を、要素数情報に基づいて生成される連続した重複しないウィンドウに投影します。 ( Observable によって定義されます)。 | |
ウィンドウ<T>(TimeSpan) | オーバーロードされます。 監視可能シーケンスの各要素を、タイミング情報に基づいて生成される連続した重複しないウィンドウに投影します。 ( Observable によって定義されます)。 | |
Window<T>(Int32, Int32) | オーバーロードされます。 監視可能なシーケンスの各要素を、要素数情報に基づいて生成される 0 個以上のウィンドウに投影します。 ( Observable によって定義されます)。 | |
Window<T>(TimeSpan, IScheduler) | オーバーロードされます。 監視可能シーケンスの各要素を、タイミング情報に基づいて生成される連続した重複しないウィンドウに投影します。 ( Observable によって定義されます)。 | |
Window<T>(TimeSpan, TimeSpan) | オーバーロードされます。 監視可能なシーケンスの各要素を、タイミング情報に基づいて生成される 0 個以上のウィンドウに投影します。 ( Observable によって定義されます)。 | |
Window<T>(TimeSpan, Int32) | オーバーロードされます。 監視可能なシーケンスの各要素を、満杯になった場合または特定の時間が経過したときに完了したウィンドウに投影します。 ( Observable によって定義されます)。 | |
Window<T>(TimeSpan, TimeSpan, IScheduler) | オーバーロードされます。 監視可能なシーケンスの各要素を、タイミング情報に基づいて生成される 0 個以上のウィンドウに投影します。 ( Observable によって定義されます)。 | |
Window<T>(TimeSpan, Int32, IScheduler) | オーバーロードされます。 監視可能なシーケンスの各要素を、満杯になった場合または特定の時間が経過したときに完了したウィンドウに投影します。 ( Observable によって定義されます)。 | |
ウィンドウ<T、TWindowClosing>(Func<IObservable<TWindowClosing>>) | オーバーロードされます。 監視可能なシーケンスの各要素を連続する重複しないウィンドウに投影します。 ( Observable によって定義されます)。 | |
ウィンドウ<T、TWindowOpening、TWindowClosing>(IObservable<TWindowOpening>、Func<TWindowOpening、IObservable<TWindowClosing>>) | オーバーロードされます。 監視可能なシーケンスの各要素を 0 個以上のウィンドウに投影します。 ( Observable によって定義されます)。 | |
Zip<T、TSecond、TResult>(IObservable<TSecond>、Func<T、TSecond、TResult>) | オーバーロードされます。 2 つの観測可能なシーケンスを、ペアごとの方法で要素を組み合わせて、1 つの観測可能なシーケンスにマージします。 ( Observable によって定義されます)。 | |
Zip<T、TSecond、TResult>(IEnumerable<TSecond>、Func<T、TSecond、TResult>) | オーバーロードされます。 セレクター関数を使用して、監視可能なシーケンスと列挙可能なシーケンスを 1 つの監視可能なシーケンスにマージします。 ( Observable によって定義されます)。 |
上
解説
サブジェクトはプロキシと同様に動作します。 サブスクライバーとパブリッシャーの両方として実行されます。 これは、IObserver インターフェイスと IObservable インターフェイスをサポートすることによって実現されます。 IObserver インターフェイスを使用して、複数のストリームまたはデータ シーケンスにサブジェクトをサブスクライブできます。 その後、データは IObservable インターフェイスを介して、サブスクライブされているすべてのオブザーバーに発行されます。 通常のサブジェクトは、スケジューラを使用してサブクリブオブザーバーへの発信呼び出しを同期します。
例
この例では、サブジェクト クラスの使用方法を示します。 文字列型の Subject のインスタンスは、2 つのニュース フィードの例をサブスクライブするために使用されます。 これらのフィードは、5 秒以下の間隔でランダムなニュースの見出しを公開するだけです。 その後、サブジェクトの監視可能なインターフェイスに対して 2 つのサブスクリプションが作成され、結合されたデータ ストリームを受信します。 1 つのサブスクリプションで、データ ストリームから各項目が "すべてのニュース" として報告されます。 他のサブスクリプションでは、ストリーム内の各見出しがフィルター処理され、ローカルの見出しのみが報告されます。 サブスクリプションはどちらも、受信した各ヘッドラインをコンソール ウィンドウに書き込みます。 ユーザーが Enter キーを押すと処理が終了し、Dispose が呼び出されて両方のサブスクリプションが取り消されます。
using System;
using System.Reactive.Linq;
using System.Reactive.Subjects;
using System.Reactive.Concurrency;
using System.Threading;
namespace Example
{
class Program
{
static void Main()
{
//*****************************************************************************************************//
//*** ***//
//*** A subject acts similar to a proxy in that it acts as both a subscriber and a publisher ***//
//*** It's IObserver interface can be used to subscribe to multiple streams or sequences of data. ***//
//*** The data is then published through it's IObservable interface. ***//
//*** ***//
//*** In this example a simple string based subject is used to subscribe to multiple news feeds ***//
//*** that provide random news headlines. Subscribers can then subscribe to the subject's ***//
//*** observable interface to observe the data stream(s) or a subset ofthe stream(s). Below we ***//
//*** subscribe the subject to two different news headline feeds. Then two subscriptions are ***//
//*** created: one for delivery of all news headlines, the other receives only local news headlines ***//
//*** ***//
//*** A local news headline just contains the newsLocation substring ("in your area."). ***//
//*** ***//
//*****************************************************************************************************//
Subject<string> mySubject = new Subject<string>();
//*********************************************************//
//*** Create news feed #1 and subscribe mySubject to it ***//
//*********************************************************//
NewsHeadlineFeed NewsFeed1 = new NewsHeadlineFeed("Headline News Feed #1");
NewsFeed1.HeadlineFeed.Subscribe(mySubject);
//*********************************************************//
//*** Create news feed #2 and subscribe mySubject to it ***//
//*********************************************************//
NewsHeadlineFeed NewsFeed2 = new NewsHeadlineFeed("Headline News Feed #2");
NewsFeed2.HeadlineFeed.Subscribe(mySubject);
Console.WriteLine("Subscribing to news headline feeds.\n\nPress ENTER to exit.\n");
//*****************************************************************************************************//
//*** Create a subscription to the subject's observable sequence. This subscription will receive ***//
//*** all headlines. ***//
//*****************************************************************************************************//
IDisposable allNewsSubscription = mySubject.Subscribe(x =>
{
Console.WriteLine("Subscription : All news subscription\n{0}\n", x);
});
//*****************************************************************************************************//
//*** Create a subscription to the subject's observable sequence. This subscription will filter for ***//
//*** only local headlines. ***//
//*****************************************************************************************************//
IDisposable localNewsSubscription = mySubject.Where(x => x.Contains("in your area.")).Subscribe(x =>
{
Console.WriteLine("\n************************************\n" +
"***[ Local news headline report ]***\n" +
"************************************\n{0}\n\n", x);
});
Console.ReadLine();
//*********************************//
//*** Cancel both subscriptions ***//
//*********************************//
allNewsSubscription.Dispose();
localNewsSubscription.Dispose();
}
}
//*********************************************************************************//
//*** The NewsHeadlineFeed class is just a mock news feed in the form of an ***//
//*** observable sequence in Reactive Extensions. ***//
//*********************************************************************************//
class NewsHeadlineFeed
{
private string feedName; // Feedname used to label the stream
private IObservable<string> headlineFeed; // The actual data stream
private readonly Random rand = new Random(); // Used to stream random headlines.
//*** A list of predefined news events to combine with a simple location string ***//
static readonly string[] newsEvents = { "A tornado occurred ",
"Weather watch for snow storm issued ",
"A robbery occurred ",
"We have a lottery winner ",
"An earthquake occurred ",
"Severe automobile accident "};
//*** A list of predefined location strings to combine with a news event. ***//
static readonly string[] newsLocations = { "in your area.",
"in Dallas, Texas.",
"somewhere in Iraq.",
"Lincolnton, North Carolina",
"Redmond, Washington"};
public IObservable<string> HeadlineFeed
{
get { return headlineFeed; }
}
public NewsHeadlineFeed(string name)
{
feedName = name;
//*****************************************************************************************//
//*** Using the Generate operator to generate a continous stream of headline that occur ***//
//*** randomly within 5 seconds. ***//
//*****************************************************************************************//
headlineFeed = Observable.Generate(RandNewsEvent(),
evt => true,
evt => RandNewsEvent(),
evt => { Thread.Sleep(rand.Next(5000)); return evt; },
Scheduler.ThreadPool);
}
//****************************************************************//
//*** Some very simple formatting of the headline event string ***//
//****************************************************************//
private string RandNewsEvent()
{
return "Feedname : " + feedName + "\nHeadline : " + newsEvents[rand.Next(newsEvents.Length)] +
newsLocations[rand.Next(newsLocations.Length)];
}
}
}
コード例を使用して、次の出力が生成されました。
Subscribing to news headline feeds.
Press ENTER to exit.
Subscription : All news subscription
Feedname : Headline News Feed #2
Headline : A robbery occurred somewhere in Iraq.
Subscription : All news subscription
Feedname : Headline News Feed #2
Headline : An earthquake occurred in Dallas, Texas.
Subscription : All news subscription
Feedname : Headline News Feed #1
Headline : We have a lottery winner in your area.
**********************************[ ローカルニュースヘッドラインレポート ]********************************** フィード名:ヘッドラインニュースフィード#1ヘッドライン:私たちはあなたの地域で宝くじの勝者を持っています。
Subscription : All news subscription
Feedname : Headline News Feed #2
Headline : Severe automobile accident Redmond, Washington
Subscription : All news subscription
Feedname : Headline News Feed #2
Headline : We have a lottery winner in Dallas, Texas.
Subscription : All news subscription
Feedname : Headline News Feed #2
Headline : An earthquake occurred in Dallas, Texas.
Subscription : All news subscription
Feedname : Headline News Feed #1
Headline : We have a lottery winner somewhere in Iraq.
Subscription : All news subscription
Feedname : Headline News Feed #2
Headline : Severe automobile accident somewhere in Iraq.
Subscription : All news subscription
Feedname : Headline News Feed #2
Headline : An earthquake occurred in your area.
**********************************[ ローカルニュースヘッドラインレポート ]********************************** フィード名 : ヘッドライン ニュース フィード #2 見出し: お客様の地域で地震が発生しました。
スレッド セーフ
この型の public static (Visual Basic では Shared) のメンバーはすべて、スレッド セーフです。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。