Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Rx、OnError清除观察者_C#_System.reactive - Fatal编程技术网

C# 使用Rx、OnError清除观察者

C# 使用Rx、OnError清除观察者,c#,system.reactive,C#,System.reactive,我有一个主题正在进行反序列化。我认为我处理反序列化异常并就我的主题打电话给OnError(ex)只是为了通知客户,这是在考虑问题。然而,我有点惊讶的是,打电话给OneRor似乎切断了我所有观察者的联系。这就是我们想要的行为吗?在我的例子中,我想提供一个异常,这样客户机就可以记录它,如果他们愿意的话,还可以继续。我不能这样做吗?这是故意的OnError类似于OnComplete——一旦你调用它,你就不能再调用OnNext,因此没有必要让观测者留下来。考虑逆:您不能继续枚举 IEnumerator

我有一个主题正在进行反序列化。我认为我处理反序列化异常并就我的主题打电话给OnError(ex)只是为了通知客户,这是在考虑问题。然而,我有点惊讶的是,打电话给OneRor似乎切断了我所有观察者的联系。这就是我们想要的行为吗?在我的例子中,我想提供一个异常,这样客户机就可以记录它,如果他们愿意的话,还可以继续。我不能这样做吗?

这是故意的
OnError
类似于
OnComplete
——一旦你调用它,你就不能再调用
OnNext
,因此没有必要让观测者留下来。考虑逆:您不能继续枚举<代码> IEnumerator <代码>,一旦<代码> MOVENTXEL()/<代码>抛出。< /P>
如果您想让这个可观察对象继续运行,您需要为错误创建一个单独的可观察对象。

这是一个麻烦,我刚刚重构了许多代码以使用Rx,这打破了这一点。有什么方法可以推翻这种行为吗?@tvde1我会用一些示例代码发布一个新问题,以了解如何重构错误处理。不,没关系,我会抛出一个巨大的
聚合异常(
:)