У меня есть 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
, но мой подписчик больше ничего не получает.Это работает под моно 2.10.1 с использованием библиотек .NET 3.5 Reactive Extensions от MS (то есть я не думаю, что это моно код умирает).Я не видел, чтобы это случилось, когда я пробовал это на Windows, но я не запускал ту же нагрузку там.Элемент, который является аргументом для OnNext, определенно не равен нулю, так что это не причина.
Любая идея, что может быть причиной этого, или как я могу восстановить тему, или мне просто нужно создать новую тему, уведомить всех моих подписчиков, чтобы подписаться на это вместо этого?
Так как это похоже на проблему Rx, я также сообщил об этом на их форуме
Обновление: Проблема была подтверждена как проблема Rx / mono для комбинаций версий, которые я использовал.Обновление до последней версии Rx (1.0.10605) решило проблему.