0

我正在尝试使用 RX 从 WCF 下载一些数据。但是Observable.FromAsyncPattern()结合使用时不返回任何响应SelecMany

我试图在下面的代码段中强调这个问题:

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 :( "));

因此,如果SelecMany正确理解 RX,上面的代码应该打印:

“我在这里”

“不能到这里:(”

但是它只打印第一行而不是第二行

编辑:忘记提及此代码在没有附加调试器的情况下运行良好,但如果我在没有调试器的情况下运行它会失败

4

1 回答 1

0

刚找到!

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

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

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

于 2012-02-28T02:58:17.810 回答