我创建了一个 ReactiveAsyncCommand (SL5),但无法订阅触发 OnError 方法。这是代码
Start1Command = new ReactiveAsyncCommand();
Start1Command.RegisterAsyncObservable(_ => this.Start())
.Subscribe<int>(
u => Debug.WriteLine("OnNext-->" + u.ToString()),
ex => Debug.WriteLine("OnError-->" + ex.Message),
() => Debug.WriteLine("OnComplete-->")
);
Start1Command.Execute(null);
以及 Start 的代码
public IObservable<int> Start()
{
return Observable.Start(() =>
{
throw new Exception("Exception");
return 42;
},
RxApp.TaskpoolScheduler);
}
当我运行这段代码时,我从 ReactiveUI 框架中得到一个异常,提示我应该订阅 ThrownExceptions。当我这样做时,我上面抛出的异常得到了正确处理。
Start1Command.ThrownExceptions.Subscribe(ex => Debug.WriteLine("ThrownExceptions OnNext-->" + ex.Message));
我应该预料到命令订阅会调用 OnError 吗?还是我必须使用 ThrownExceptions。