Так дело вот в чем. Предположим, где-то я заполняю Collection. Каждый раз, когда добавляется элемент, IObservable вызывает OnNext для своих подписчиков.
Теперь будет точка, в которой коллекция будет заполнена. (Что-то читал и дочитал.. что угодно). В этот момент для подписчиков вызывается OnComplete().
Однако пользователь не заметит этот метод. Он скорее вызовет асинхронный метод, которого он будет ждать... ему все равно, что он прочитал, ему просто важно, что он закончил читать.
Итак, в основном, я хочу от IObservable Task, который возвращается, когда IObservable вызывает OnComplete() для своих подписчиков. Я специально хочу, чтобы пользователь не использовал наблюдателя, а просто был счастлив, зная, что все, что происходит после его вызова await, произойдет после заполнения коллекции.
Может быть, метод ToTask() помогает? Я не могу точно сказать по документации.
IEnumerable<T>
,IObservable<T>
иTask<T>
. Каждое изменение вводит точку в код, которая может преждевременно вызвать выполнение и/или привести к неожиданному поведению. Наблюдаемые объекты более мощные и выразительные, чем задачи, поэтому лучше оставаться в наблюдаемых. - person Enigmativity   schedule 24.02.2015