私が遭遇したユースケースは、私だけではないと思われますが、次のような方法です。
IObservable<T> Observable.RepeatLastValueDuringSilence(this IObservable<T> inner, TimeSpan maxQuietPeriod);
これは、内部のobservableから将来のすべてのアイテムを返しますが、内部のobservableが一定期間OnNextを呼び出さない場合(maxQuietPeriod)、最後の値を繰り返すだけです(もちろん、内部がOnCompletedまたはOnErrorを呼び出すまで) 。
正当な理由は、サービスが定期的なステータス更新を定期的にpingアウトすることです。例えば:
var myStatus = Observable.FromEvent(
h=>this.StatusUpdate+=h,
h=>this.StatusUpdate-=h);
var messageBusStatusPinger = myStatus
.RepeatLastValueDuringSilence(TimeSpan.FromSeconds(1))
.Subscribe(update => _messageBus.Send(update));
このようなものはありますか?それとも私はそれの有用性を過大評価していますか?
ありがとう、アレックス
PS:Rxを初めて調べているだけなので、用語や構文が間違っていることをお詫びします。