2012-02-28 93 views
0

我想从RX下载WCF的一些数据。然而,使用SelecManyObservable.FromAsyncPattern()卡住

我试图突出下面的代码片段这个问题combind时Observable.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正确,上面的代码应该打印:

“我在这里”

“不可能到达:(”

但只打印第一行,而不是第二个

编辑:忘了提,该代码运行正常不附加一个调试器,但是没有如果我没有调试器中运行

回答

0

刚找到了!

首先,我不应该让吞食异常,即使它是测试代码并且应该记录IObservable报告的所有异常。

其次,我从MSUnit测试运行我的项目,当它运行一个附加的dubugger时,它影响了WCF绑定的maxReceivedMessageSize(至少看起来像这样),所以当我以调试模式运行时它一切正常,但当没有它时运行一个请求失败,但我没有看到它,因为我没有检查OnError消息。

获得的经验教训:始终登录错误消息

+0

如果解决了问题,则可以将答案标记为已接受。 – Asti 2012-03-06 20:22:28