2012-02-28 2 views
0

Я пытаюсь загрузить некоторые данные из WCF с помощью RX. Однако Observable.FromAsyncPattern() не возвращает ответ, когда Combind используя SelecManyObservable.FromAsyncPattern() застрял

Я попытался выделить эту проблему в поле ниже фрагменте кода:

var timer = Observable.Timer(TimeSpan.FromSeconds(1)); 
var obs = Observable.FromAsyncPattern<PictureFile>(ServiceClient.BeginDownloadFilePreview, ServiceClient.EndDownloadFilePreview); 

obs().Subscribe(x => Debug.WriteLine("I am here")); 

var result = from _ in timer 
      from data in obs() 
      select data; 

result.Subscribe(x => Debug.WriteLine("Can't get here :(")); 

Так что, если понимать RX и SelecMany правильно, приведенный выше код должен напечатать:

"Я здесь"

"не можете получить здесь :("

Однако это выводит только первую строку, а не второй один

Edit: забыл упомянуть, что этот код работает отлично без отладчика прилагается, но терпит неудачу, если я запустить его без отладчика

ответ

0

Просто нашел его!

Во-первых, у меня не было проглотил исключения, хотя это был тестовый код и должен был регистрировать все исключения, о которых сообщает IObservable.

Во-вторых, я запускал свой проект из тестов MSUnit, а при запуске его с подключенным dubugger он влиял на привязку maxReceivedMessageSize для WCF (по крайней мере, похоже, что он), поэтому, когда я работал в режиме отладки, все работало, но при запуске без него один запрос не удался, но я не видел его, поскольку я не регистрировал сообщения OnError.

Выведенный урок: Всегда регистрировать сообщения об ошибках

+0

Вы можете пометить свой ответ как принятый, если решили свою проблему. – Asti

Смежные вопросы