0

IObservable 問題を生成する次の Rx クエリがあります。これは Publish() では機能しないため、サブスクライバーの数が増加するとメモリ負荷も増加します。

// Works
Observable
    .Interval(TimeSpan.FromSeconds(1.0))
    .Select(_ => XDocument.Load("http://test.com/data.xml"));

// Broken
Observable
    .Interval(TimeSpan.FromSeconds(1.0))
    .Select(_ => XDocument.Load("http://test.com/data.xml")).Publish();

そのような Observable を作成するより良い方法はありますか?

4

1 に答える 1

2

Connect() を呼び出すまで、IConnectableObservable はソースから切断されるため、誰かがサブスクライブするまで何も起こりません (Interval はタイマーを開始しません)。Connect() は、パブリッシュをそのソースにサブスクライブさせます。

于 2012-02-23T20:50:14.007 に答える