我们已从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中的异常会导致此行为吗?
答案 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());
}
);
当我不关心异常时。如果它是一个真正的问题,最好明确地忽略错误和/或将其记录在某处。