【发布时间】:2018-03-27 01:28:56
【问题描述】:
我有一个关于如何配置 c# Reactive ReplaySubject 以使其表现出以下行为的问题:
- 当 OnNext() 被调用,并且还没有订阅者时,交给 OnNext() 的项目应该被缓存在 ReplaySubject 中。
- 当至少有一个缓存项,并且消费者订阅了 ReplaySubject 时,它会接收所有缓存项。收到 Item 后,应将其从 ReplaySubject 的缓存中删除,并且在第二个消费者订阅后不再返回。
- 当两个或多个消费者在添加项目之前订阅了 ReplaySubject。所有消费者都应该在调用 OnNext() 时获得传递给它的项目。 (这不是很重要,如果只有第一个或最后一个订阅者获得该项目也可以)
在 ReplaySubject 的构造函数中,我只能找到限制项目保留时间或保留项目数量的参数。
这里有更多关于我为什么要实现所描述的行为的上下文。我正在开发与蓝牙设备通信的手机应用程序。蓝牙设备可以发送应用程序接收到的通知(BT Gatt Notification)。应用收到一堆通知后,会将这些通知合并为一条消息,传递给 ReplaySubject,然后由订阅者处理。
非常感谢有关如何实现上述行为的任何提示或更适合解决我的用例的替代解决方案。
【问题讨论】:
标签: c# system.reactive