私はRXに慣れていません。希望のシナリオはうまくいきますが、これを達成するためにはもっとシンプルで洗練された方法が必要です。私が持っているのはIObservable<T>
で、私はIObservable<U>,
で終わるようにそれを購読したいと思っています。それは、見ているTごとにUを生成する非同期操作を引き起こします。IObservableを別のIObservableに非同期で依存させる簡単な方法はありますか?
私がこれまでに(それは素晴らしい動作しますが、面倒なようです)このような中間イベントストリームを使用して行く持っているもの:
public class Converter {
public event EventHandler<UArgs> UDone;
public IConnectableObservable<U> ToUs(IObservable<T> ts) {
var us = Observable.FromEvent<UArgs>(this, "UDone").Select(e => e.EventArgs.U).Replay();
ts.Subscribe(t => Observable.Start(() => OnUDone(new U(t))));
return us;
}
private void OnUDone(U u) {
var uDone = UDone;
if (uDone != null) {
uDone(this, u);
}
}
}
...
var c = new Converter();
IConnectableObservable<T> ts = ...;
var us = c.ToUs(ts);
us.Connect();
...
を、私は私が行うにははるかに簡単な方法が欠けていると確信していますこの...
ここに「リプレイ」をしてもよろしいですか? –