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 使用惰性求值,但我想以某种方式限制这个 hot observable 在每个间隔只执行一次 GetPressedKeys() 函数,即使有多个订阅者也是如此。这可能吗?

4

1 回答 1

2

是的,您可以通过 Publish 执行此操作:

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