日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。番外編「System.Reactive.Linq.Observableのメソッド一覧とメモ」はじめにまた、しばらく間があいていましたがマイペースでいきます。Sampleメソッドここでは、Sampleメソッドについて説明します。Sampleメソッドは、指定した間隔(時間や任意のタイミング)で最後に発行された値を後続に流すメソッドになります。大量の値が発行されるようなIObservableのシーケンスから任意の間隔で値を絞って後続の処理に渡すケースなどで利用できます。メソッドのシグネチャを下記に示します。interval);このオーバーロードは、時間で値をフィルタリングします。1つ任意の間隔で後続に最後の値を流すオーバーロードは下記のようなシグネチャになっています。sampler);このオーバーロードは、IObservableのOnNextで値が発行されるタイミングで後続に値を流します。このオーバーロードを使うことで、非同期処理が終わったタイミングや、ボタンのクリックイベントなどをトリガーにして、一番最後に発行された値を後続に流せます。コード例を以下に示します。購読終了subscriber.Dispose();100ミリ秒間隔で0〜99の値を発行しています。この値をSampleメソッドを使って1秒間隔で最後に発行された値に絞り込んでSubscribeで結果を表示しています。実行結果を以下に示します。82長い実行結果になりますが、Dumpが大量に表示されていることから100msごとに乱数が発生していることが確認できます。示している箇所)は1秒間隔になっていることが確認できます。上記の例では、発行される値の間隔に比べてSampleで取得する値をフィルタリングするように設定していましたが、逆に値は10秒間隔で発行されるのに対してSampleメソッドで8秒でフィルタリングしたときに、どのような挙動になるのかを確認したいと思います。コード例を下記に示します。購読解除subscriber.Dispose();実行結果は以下のようになります。61結果からわかるように、Sampleメソッドは、8秒待っても値が発行されない(元のシーケンスは10秒間隔での値の発行のため)ので、値が発行されなかった場合は何もせず次のタイミングを待っています、次のタイミングで値がきていたら後続に値を流す動きをします。IObservableを渡して任意のタイミングで、後続に値を流すメソッドのオーバーロードについては、割愛します。C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。Blogの内容は個人の見解であり、所属する企業を代表するものではありません。)はてなブログをはじめよう!okazukiさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。