Является ли грубым запускать OnNext из разных потоков в Reactive Extensions (Rx)? - PullRequest
2 голосов
/ 22 июня 2010

При реализации IObserver вы знаете, насколько хорошо вы справляетесь с ситуацией, когда OnNext вызывается из разных потоков, одновременно или последовательно, но каковы ожидания встроенных примитивов Reactive Extension, когда это происходит? Например, будет ли BufferWithTime справляться с вызовом OnNext из нескольких потоков? Вызывается одновременно из нескольких потоков?

1 Ответ

2 голосов
/ 23 июня 2010

Пока вы следуете двум частям контракта, которые использует Rx, у вас должно быть все в порядке:

  • следуйте следующей грамматике: OnNext * (OnError | OnCompleted)?
  • убедитесь, что ваши сообщения синхронизированы (нет двух сообщений в полете одновременно)

Вы можете использовать оператор Observable.Synchronize, чтобы исправить реализацию IObservable, которая не следует этим двум правилам.

Джеффри

...