Observable.Window<TSource> メソッド (IObservable<TSource>、Int32、Int32)
監視可能なシーケンスの各要素を、要素数情報に基づいて生成される 0 個以上のウィンドウに投影します。
Namespace:System.Reactive.Linq
アセンブリ: System.Reactive (System.Reactive.dll)
構文
'Declaration
<ExtensionAttribute> _
Public Shared Function Window(Of TSource) ( _
source As IObservable(Of TSource), _
count As Integer, _
skip As Integer _
) As IObservable(Of IObservable(Of TSource))
'Usage
Dim source As IObservable(Of TSource)
Dim count As Integer
Dim skip As Integer
Dim returnValue As IObservable(Of IObservable(Of TSource))
returnValue = source.Window(count, _
skip)
public static IObservable<IObservable<TSource>> Window<TSource>(
this IObservable<TSource> source,
int count,
int skip
)
[ExtensionAttribute]
public:
generic<typename TSource>
static IObservable<IObservable<TSource>^>^ Window(
IObservable<TSource>^ source,
int count,
int skip
)
static member Window :
source:IObservable<'TSource> *
count:int *
skip:int -> IObservable<IObservable<'TSource>>
JScript does not support generic types and methods.
型パラメーター
- TSource
ソースの種類。
パラメーター
- source
種類: System.IObservable<TSource>
ウィンドウを生成するソース シーケンス。
- count
種類: System.Int32
各ウィンドウの長さ。
- skip
種類: System.Int32
連続するウィンドウの作成の間にスキップする要素の数。
戻り値
種類: System.IObservable<IObservable<TSource>>
観察可能なウィンドウのシーケンス。
使用上の注意
Visual Basic および C# では、 IObservable<TSource> 型の任意のオブジェクトでインスタンス メソッドとしてこのメソッドを呼び出すことができます。 インスタンス メソッド構文を使用してこのメソッドを呼び出す場合は、最初のパラメーターを省略します。 詳細については、」または」を参照してください。
解説
Window 演算子を使用すると、シーケンスをウィンドウ ビューのようにバッファーに格納されたサブセットに分割できます。 count パラメーターは、各ウィンドウに配置される項目の数を制御します。 skip パラメーターは、次のウィンドウが開始するときに、メイン シーケンスで生成された項目をカウントすることによって制御します。 指定した数の項目がスキップされると、新しいウィンドウがシーケンスのサブセットのバッファー処理を開始します。
例
次の使用例は、Interval 演算子を使用して、整数のメインシーケンスを生成します。 1 秒ごとに新しい整数が生成されます。 メイン シーケンスは、Window 演算子によって、整数シーケンスのウィンドウ ビューのようなサブセットに分割されます。 各ウィンドウには、最初の項目 (0) から始まるシーケンスの 3 つの項目の数が含まれます。 次に、5 つの項目がスキップされるため、3 つの整数を含む整数シーケンスにウィンドウが作成されます。 各ウィンドウは、0 から始まる 5 番目の整数ごとに始まります。
using System;
using System.Reactive.Linq;
using System.Reactive.Concurrency;
namespace Example
{
class Program
{
static void Main()
{
//***********************************************************************************************//
//*** The mainSequence produces a new long integer from the Interval operator every second ***//
//*** but this sequence is broken up by the Window operator into subsets like a windowed ***//
//*** view of the sequence. The count parameter controls how many items are placed in each ***//
//*** window. The skip parameter controls when the next window starts by counting the items ***//
//*** produced in the main sequence. When the the specified number of items are skipped, a ***//
//*** new window starts. ***//
//*** ***//
//*** In this example each window will contain a count of 3 items from the sequence starting ***//
//*** with the first item (0). 5 items are "skipped" to determine when the next window opens. ***//
//*** So the result is that the integer sequences in the windows start with every 5th integer ***//
//*** beginning at 0 and include 3 integers. ***//
//***********************************************************************************************//
var mainSequence = Observable.Interval(TimeSpan.FromSeconds(1));
int count = 3;
int skip = 5;
var seqWindowed = mainSequence.Window(count, skip);
//*********************************************************************************************//
//*** A subscription to seqWindowed will provide a new IObservable<long> for every 5th item ***//
//*** in the main sequence starting with the first item. ***//
//*** ***//
//*** Create a subscription to each window into the main sequence and list the value. ***//
//*********************************************************************************************//
Console.WriteLine("\nCreating the subscription. Press ENTER to exit...\n");
seqWindowed.Subscribe(seqWindow =>
{
Console.WriteLine("\nA new window into the main sequence has been opened\n");
seqWindow.Subscribe(x =>
{
Console.WriteLine("Integer : {0}", x);
});
});
Console.ReadLine();
}
}
}
コード例を使用して、次の出力が生成されました。
Creating the subscription. Press ENTER to exit...
A new window into the main sequence has been opened
Integer : 0
Integer : 1
Integer : 2
A new window into the main sequence has been opened
Integer : 5
Integer : 6
Integer : 7
A new window into the main sequence has been opened
Integer : 10
Integer : 11
Integer : 12
A new window into the main sequence has been opened
Integer : 15
Integer : 16
Integer : 17