RX をテストし、1 秒間隔で 2 つのイベントを提供する Stream() を作成しようとしてテストしています。
private IObservable<string> Stream()
{
return Observable.Create<string>
(
(IObserver<string> observer) =>
{
observer.OnNext("a");
observer.OnNext("b");
observer.OnCompleted();
return Disposable.Create(() => Console.WriteLine("Observer has unsubscribed"));
}
);
}
_refreshFiberStream =
Stream()
.SubscribeOn(schedulerProvider.EventLoop)
.Select(DoCalc)
.ObserveOn(schedulerProvider.Dispatcher)
.Subscribe(Update);
そしてScheduleProvider
public sealed class SchedulerProvider : ISchedulerProvider
{
public IScheduler Dispatcher
{
get { return DispatcherScheduler.Current; }
}
public IScheduler EventLoop
{
get { return new EventLoopScheduler(); }
}
// ...
}
入力ごとに DoCalc メソッドが 2 回呼び出され、続いて Update メソッドが 2 回呼び出されます。DoCalc、DoCalc、Update、Update です。代わりに、DoCalc メソッドの後に Update メソッドが続くシーケンスを確保しようとしています。2 番目の入力のシーケンスを繰り返して、2 番目の入力が最初の入力、DoCalc、Update、DoCalc、Update の結果の上に構築できるようにします。
何かご意見は