Как вы уже заметили, SubscribeOn будет контролировать только то, где будет происходить подписка.Тем не менее, в вашем коде SubscribeOn не действует вообще, потому что за ним не следует подписка.Помните, что SubscribeOn возвращает Observable, который будет использоваться для подписки.Дело не в том, что вы можете вызвать «SubscribeOn», чтобы установить какой-либо глобальный флаг внутри источника или что-то в этом роде.
Что вы на самом деле хотите сделать, так это вызвать «ObserveOn» внутри вашего сервиса непосредственно перед подпиской.ObserveOn
определяет поток обработки входящих сообщений.Другой вариант - записать ObserveOn
непосредственно в MessageListener, чтобы он выглядел следующим образом:
public IObservable<string> MessageStream
{
get
{
return this.stream.ObserveOn(Scheduler.ThreadPool).AsObservable();
}
}
Еще одна вещь, которую следует отметить, в вашем свойстве MessageStream лучше вызывать this.stream.AsObservable()
, а не возвращать напрямуюпредмет.