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

したがって、RXをSelecMany正しく理解していれば、上記のコードは次のように出力されます。

"私はここにいます"

「ここに行けない:(」

ただし、最初の行のみが印刷され、2番目の行は印刷されません。

編集:このコードはデバッガーが接続されていなくても正常に実行されますが、デバッガーなしで実行すると失敗することを忘れました

4

1 に答える 1

0

見つけた!

まず、それがテストコードであり、IObservableによって報告されたすべての例外をログに記録する必要があったとしても、例外を飲み込むべきではありませんでした。

次に、MSUnitテストからプロジェクトを実行し、ダバガーをアタッチして実行すると、WCFバインディングのmaxReceivedMessageSizeに影響しました(少なくともそのように見えます)。したがって、デバッグモードで実行するとすべて機能しましたが、それなしで実行すると1つの要求が失敗しましたが、OnErrorメッセージをチェックインしていなかったため、それを確認できませんでした。

教訓:常にログオンエラーメッセージ

于 2012-02-28T02:58:17.810 に答える