免责声明:我是Rx.Net的新手。
我想了解使用Rx.Net从服务器使用事件的最佳方法。当前,我有一个包含rx主题的使用者类,将使用的更新委托给下游使用者:
Event Listener/Processor:
public IObservable<IUpdate> UpdateStream => _subject?.AsObservable();
try
{
// ... processing ...
_subject.OnNext(update); // update is the variable
}
catch (Exception ex)
{
_subject.OnError(ex);
}
下游订阅者:
public void Subscribe()
{
_eventListener.UpdateStream.Subscribe(update =>
{
_fooProcessor.Process(update);
},
ex =>
{
// log
Subscribe(); // an effort to resubscribe lost subscription
},
() => { // log completion (optional)...}
}
我注意到主题在onNext上引发异常(已经添加了具有相同键的项),其中subject.HasObservers属性为false(换句话说,下游订阅列表丢失了)。确实出现了OnError代码行,但是下游订阅者没有收到通知(因为订阅丢失)。
我尝试使用Observer.EventPattern监听消耗事件,并创建可观察的对象以供下游用户使用;但这效果不佳(在这种情况下,我无法评估故障点)。
在这种情况下,是否有一种模式可以从下游使用者(在不同的dlls上)重新订阅?
感谢任何帮助。 谢谢!
答案 0 :(得分:0)
我发现下游订阅者引发异常,导致订阅被删除。现在这不是问题。