ブール値が true に設定された直後に更新を照会し、5 分ごとに再チェックしたい Web サービスがあります。
ここに私の現在の観察可能性があります:
_queryDisposable = Observable
.Interval(TimeSpan.FromMinutes(5))
.ObserveOn(Scheduler.ThreadPool)
.Where(i => IsProcessing) // IsProcessing is the bool value
.Subscribe(GetFeeds, OnError, OnComplete);
このオブザーバブルは、IsProcessing
bool が true か false かを 5 分ごとにチェックし、true のGetFeeds
場合は呼び出します。
目的の効果を得るために私が考えることができる唯一の方法はIsProcessing
、次のような 2 つのオブザーバブルを使用して、プロパティに基づくフィールドとプロセスを作成することです。
private bool _isProcessing;
public bool IsProcessing
{
get { return _isProcessing; }
set
{
if (_isProcessing == value)
return;
_isProcessing = value;
if (!value)
{
if(_queryDisposable != null)
_queryDisposable.Dispose();
_queryDisposable = null;
}
else
{
Observable
.Range(0,1)
.ObserveOn(Scheduler.ThreadPool)
.Subscribe(GetFeedsSafe, OnError, OnComplete);
_queryDisposable = Observable
.Interval(TimeSpan.FromMinutes(5))
.ObserveOn(Scheduler.ThreadPool)
.Subscribe(GetFeedsSafe, OnError, OnComplete);
}
}
}
私はそれが非常にエレガントな解決策だとは思わないので、この効果を達成するためのより良い方法があるかどうか知りたいですか?