c# - 如何将实体推送到 Rx Observable 上?

标签 c# .net system.reactive

我有一个类负责以频繁但不规则的间隔生成事件,其他类必须使用该类并对其进行操作。我想用 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/

相关文章:

c# - LINQ to SQL - 从 X WHERE X = "1"选择 Y

c# - DataRowCollection 线程安全吗?

azure - Windows Azure 上的 RX

c# - 在异步中调用 PInvoke 执行后不会返回到主线程

c# - 从 C# 流中读取无符号 24 位整数

C# JToken.SelectTokens 方法 - 什么 JPath 表达式?

c# - 我怎么知道哪个方法调用了我的方法?

c# - 具有计数和时间条件的缓冲区运算符

c# - Unity3D:相机无法使用第一人称脚本移动

c# - 需要来自 WebBrowser 控件的 HTTP 状态(200/500/等)代码