0

XNA ポーリング ベースの入力を Observable ベースの入力に変換しています。ここで、GetPressedKeys() メソッドは、20 ミリ秒ごとに列挙型キーの列挙型を返します。

Observable.Generate(
    Enumerable.Empty<Keys>(),
    pressed => true,
    pressed => Keyboard.GetState().GetPressedKeys(),
    pressed => pressed,
    pressed => TimeSpan.FromMilliseconds(20),
    scheduler
).DistinctUntilChanged();

私の問題は、これがすべてのサブスクライバーに対して行われることです。Rx が遅延評価を使用していることは理解していますが、複数のサブスクライバーが存在する場合でも、GetPressedKeys() 関数を間隔ごとに 1 回だけ実行するように、このホット オブザーバブルを何らかの形で制限したいと考えています。これは可能ですか?

4

1 に答える 1

2

はい、公開を介してこれを行います。

thatObservable = thatObservable.Publish().Refcount();
于 2013-01-29T00:01:30.580 に答える