Observable.FromAsyncPattern() is stuck

本文关键字:is stuck FromAsyncPattern Observable | 更新日期: 2023-09-27 18:25:56

我正在尝试使用RX从WCF下载一些数据。然而,当使用SelecMany 组合时,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,上面的代码应该打印:

"我在这里"

"无法到达此处:("

然而,它只打印第一行而不打印第二行

编辑:忘记了,这段代码在没有附加调试器的情况下运行良好,但如果我在没有调试器的情况下进行运行,则会失败

Observable.FromAsyncPattern() is stuck

刚刚找到!

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

其次,我从MSUnit测试中运行我的项目,当使用附加的dubugger运行它时,它影响了WCF绑定的maxReceivedMessageSize(至少看起来像它),所以当我在调试模式下运行时,它都工作了,但当没有它运行时,一个请求失败了,但我没有看到它,因为我没有签入OnError消息。

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