【发布时间】:2013-11-29 23:03:27
【问题描述】:
我开始在我的项目中使用响应式扩展并发现以下问题。我的班级中有一个主题,我需要所有客户端观察者在不同的线程中处理 OnNext 消息。
private Subject<IEnumerable<int>> _multiResponse =
new Subject<IEnumerable<int>>();
public IObservable<IEnumerable<int>>> MultiResponse
{
get
{
return _response.ObserveOn(TaskPoolScheduler.Default);
}
}
如果客户端在 OnNext 事件中抛出异常,所有进程都会因为 Task 中未观察到的异常而崩溃。堆栈跟踪:
Scheduler.cs:第 149 行中的 ProcessResponses(IEnumerable 响应) 在 System.Reactive.AnonymousSafeObserver'1.OnNext(T 值) 在 System.Reactive.ScheduledObserver'1.Dispatch(ICancelable 取消) 在 System.Reactive.Concurrency.Scheduler.b_32(Action'1 a, ICancelable c) 在 System.Reactive.Concurrency.TaskPoolScheduler.c_DisplayClass7'1.b__6() 在 System.Threading.Tasks.Task.Execute()
这是 RX 中的预期行为还是错误以及如何处理?
【问题讨论】:
-
异常的类型和信息是什么?这些通常比堆栈跟踪更重要。
标签: c# .net system.reactive