如何在异常后保持ReactiveCommand存活?

时间:2017-12-17 13:45:40

标签: c# observable reactiveui

我正在尝试使用此代码段:

LinkCurrentMailToCase = ReactiveCommand.CreateFromObservable(() => MyAPI.AddMailToCase(CurrentMailItem, CurrentCase));

LinkCurrentMailToCase .ThrownExceptions.Select(ex => ex.Message).ToProperty(this, vm => vm.ErrorMessage, out errorMessage);

然后我将一个按钮绑定到LinkCurrentMailToCase。这可以正常工作,直到抛出异常,在这种情况下我的LinkCurrentMailToCase不再被调用。

从我在不同帖子中读到的内容来看,这是Observable的正常行为,但如果在保持Observable活着的同时抛出异常,我无法弄清楚如何设置我的ErrorMessage。

1 个答案:

答案 0 :(得分:0)

您的代码段中的命令在失败后仍然可以再次调用,因此没有必要使用Catch。但是如果您订阅了命令本身并且它失败了它将在OnError回调中结束(如果你有的话),除了通过ThrownExceptions

这一切都取决于你如何调用命令,如果你使用BindCommand或使用来自另一个observable的InvokeCommand管道命令它应该按照描述工作。

但是如果你使用<Command>.Execute().Subscribe()并且你没有注册OnError处理程序(或者例如使用Catch),命令中的可观察管道将会中断。