Методы IObservable
не изменяют базовый объект - они возвращают новый. stream.StartWith(initialPrice)
возвращает новую наблюдаемую, которую вы игнорируете, она ничего не делает для stream
.
Вы должны написать это так:
stream = stream.StartWith(initialPrice);
Или:
var stream = _priceObserver.Stream
.Where(o => o.Symbol == instrumentDetails.Symbol)
.Select(o => GetPrice(o, instrumentDetails))
.StartWith(initialPrice);
Примечание: если вы ожидаете наблюдаемое, оно будет ждать, пока наблюдаемое не будет завершено, т.е. когда оно выдает все свои значения и вызывает свой метод OnComplete
. Обычно вы должны ждать наблюдаемого, которое, как вы знаете, будет выдавать только 1 значение, а затем завершать (например, запрос к удаленному серверу), потому что его ожидание вернет только последнее переданное значение. Поэтому, если ожидается, что ваш stream
будет непрерывно выдавать значения, нет смысла его ждать.