EventLoopScheduler中的RX2异常

时间:2012-11-07 15:43:23

标签: system.reactive reactive-programming

我们已从RX1.1.11111.1移民到RX 2.0.20823.2。现在我们遇到了一个来自EventLoopScheduler的罕见异常:

an Unhandled Exception occured in non UI thread.
System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Reactive.Concurrency.EventLoopScheduler.Run()
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

有没有人猜到这是什么问题?是因为我们没有使用onError委托,我们的一个方法失败了吗?

以下是代码的要点:

EventLoopScheduler m_scheduler = new EventLoopScheduler();

。 。

m_receivedMessageHandler.StatusReceived.ObserveOn(m_scheduler)     .Subscribe(p_unit => sendAll(m_retransmitManager,m_endPoint));

sendAll中的异常会导致此行为吗?

1 个答案:

答案 0 :(得分:0)

您需要在Subscribe中放置一个onError处理程序,否则应用程序将崩溃。如果您不关心错误,那就吃它而不做任何事情。我犯了同样的错误,所以我做了

            var subscription = observable.Subscribe(
                onNext: (v) => DoSomethingWith(v),
                onError: (Exception e) => {
                    // Just eat and log the exception.
                    Debug.WriteLine(e.ToString());
                }
            );

当我不关心异常时。如果它是一个真正的问题,最好明确地忽略错误和/或将其记录在某处。