NoP*_*God 5 c# system.reactive observer-pattern
我正在使用我的项目中的IObserver/ IObservableinterfaces.
这CommandReader是一个IObservable连续从流中读取数据然后将其传递给它CommandHandler IObserver的数据.
当底层流关闭(例如连接死亡)时,我将通过该IObserver.OnError(exception)方法通知观察者
观察者收到此通知时应该怎么做?它应该从观察中释放出来吗?或者是父母班的责任?
对于初学者来说,您通常不应该实现自己的IObservable对象IObserver。你的问题有点暗示了原因。使潜在的行为正确是非常困难的。
现在每次调用都会IObservable.Subscribe返回一个IDisposable. 如果 的调用者希望在调用orSubscribe之前取消订阅可观察对象,则可以使用此方法。但是,如果 调用or ,则将自动处理掉。因此,当可观察集合完成时,Rx 会自动进行清理。OnCompletedOnErrorOnCompletedOnErrorIDisposable
每个单独的观察者不需要管理自己的订阅生命周期。观察者只需要响应OnCompleted/OnError消息即可。
在您的代码中,我建议您考虑稍微更改您的代码。我希望CommandReaderPublisher带有Subscribe方法的类可能比CommandReader类更合适。Rx 流完成后就无法继续使用。
我也想知道调用是否OnCompleted会比OnError(exception)底层流关闭时更好。如果发生错误那没问题,但如果它关闭那就ONCompleted更好了。