- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个类负责以频繁但不规则的间隔生成事件,其他类必须使用该类并对其进行操作。我想用 Reactive Extensions为了这个任务。
这方面的消费者方面非常简单;我有我的消费者类实现 IObserver<Payload>
一切似乎都很好。问题出在生产者类上。
实现 IObservable<Payload>
直接(也就是说,根据文档,不推荐为 IDisposable Subscribe(IObserver<Payload> )
实现我自己的实现。它建议使用 Observable.Create()
函数集进行组合。因为我的类(class)会运行很长时间,所以我试过使用 var myObservable = Observable.Never()
创建一个 Observable,然后,当我有可用的新有效负载时,调用 myObservable.Publish(payloadData)
。不过,当我这样做时,我似乎没有在我的消费者中实现 OnNext
。
我认为,作为变通方法,我可以在我的类(class)中创建一个事件,然后使用 FromEvent
创建 Observable功能,但这似乎是一种过于复杂的方法(即,Observables 的新热点“需要”事件来工作似乎很奇怪)。我在这里忽略了一种简单的方法吗?创建自己的 Observable 源的“标准”方法是什么?
最佳答案
创建一个 new Subject<Payload>
并称之为OnNext
发送事件的方法。你可以Subscribe
与你的观察者讨论这个问题。
主题的使用经常引起争论。有关主题使用的详尽讨论(链接到入门),请参阅 here - 但总而言之,这个用例听起来很有效(即它可能符合本地 + 热门标准)。
顺便说一句,订阅接受委托(delegate)的重载可能会消除您提供 IObserver<T>
实现的需要。 .
关于c# - 如何将实体推送到 Rx Observable 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29263089/
我是一名优秀的程序员,十分优秀!