我有一个Subject<T>,我要通过OnNext将条目发布到其中,过了一段时间,在负载下,我得到了这个异常:
System.NullReferenceException: Object reference not set to an instance of an object
at System.Diagnostics.ExceptionExtensions.PrepareForRethrow (System.Exception exception) [0x00000] in <filename unknown>:0
at System.Concurrency.AsyncLock.Wait (System.Action action) [0x00000] in <filename unknown>:0
at System.Concurrency.Scheduler+<>c__DisplayClass4.<Schedule>b__0 () [0x00000] in <filename unknown>:0
at System.Concurrency.ImmediateScheduler.Schedule (System.Action action) [0x00000] in <filename unknown>:0
at System.Concurrency.Scheduler.Schedule (IScheduler scheduler, System.Action`1 action) [0x00000] in <filename unknown>:0
at System.ScheduledObserver`1[GetNotifyd.Superfeedr.FeedItem].EnsureActive () [0x00000] in <filename unknown>:0
at System.Collections.Generic.Subject`1[GetNotifyd.Superfeedr.FeedItem].OnNext (GetNotifyd.Superfeedr.FeedItem value) [0x00000] in <filename unknown>:0在这种情况发生后,我仍然可以通过OnNext发布项目,但是我的订阅者不再接收任何信息。这是在mono2.10.1下运行的,使用的是MS的.NET 3.5反应性扩展DLL(也就是说,我不认为正在消亡的是mono代码)。当我在windows上尝试它时,我还没有看到这种情况发生,但是我没有在那里运行相同的负载。作为OnNext参数的项绝对不是null,所以这不是原因。
你知不知道这是什么原因,或者我如何恢复主题,或者我是否只需要创建一个新的主题,通知我的所有订阅者订阅该主题?
因为它看起来像一个Rx问题,我也在他们的论坛上报道过
更新:对于我使用的版本组合, 问题得到证实是一个Rx/mono问题。升级到最新的Rx (1.0.10605)解决了这个问题。
发布于 2011-06-26 14:57:06
您可能在Rx中碰到了一个竞赛条件错误。
注意,在此MSDN线程中,一个海报也有一个类似的问题:一个无法解释的NullReferenceException来自一个指向AsyncLock.Wait的堆栈跟踪。
现在,他的问题是由于ThreadStatic没有在Windows 7上工作而引起的。难道ThreadStatic在Mono上有细微的行为吗?
我建议通过Rx论坛向Rx团队报告此错误。
https://stackoverflow.com/questions/6482680
复制相似问题