我使用Observable.FromEventPattern
创建了一个observable。我们称之为fromEvents
。
我想创建另一个包裹fromEvents
的observable。我们称这第二个可观察wrapper
。
订阅wrapper
时应该:
fromEvents
中的最新项目(如果有)。fromEvents
显然wrapper
需要维持对fromEvents
的订阅,以便始终可以访问最近的活动。
我尝试了Replay
,Publish
,PublishLast
,Observable.Defer
的各种组合,而且我从来没有得到我想要的结果
我确定Rx的操作员能满足我的需求,我只是不确定如何把所有东西放在一起,成为我的新人。
答案 0 :(得分:1)
我认为通过这样做我已经能够得到我想要的东西:
Events = Observable.FromEventPattern(...).Replay(1).RefCount();
// contrived example
// in my real app the subscription lives for a specific duration
// and Events is exposed as a readonly property
using(Events.Subscribe())
{
// get most recent or wait for first
var e = Events.FirstAsync().Wait();
}
答案 1 :(得分:0)
使用Publish重载的示例,该重载使用幕后的BehaviorSubject来跟踪最近的事件。
var fromEvents = Observable.FromEventPattern(...);
var published = fromEvents.Publish(null);
// subscribe to this one
var wrapper = published.Where(e => e != null);
// start collecting values
var subscription = published.Connect();
wrapper.Subscribe(...);