gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:58:26 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com