我正在将基于XNA轮询的输入转换为基于Observable的输入。这里,GetPressedKeys()方法每20毫秒返回一个枚举的枚举键:
Observable.Generate(
Enumerable.Empty<Keys>(),
pressed => true,
pressed => Keyboard.GetState().GetPressedKeys(),
pressed => pressed,
pressed => TimeSpan.FromMilliseconds(20),
scheduler
).DistinctUntilChanged();
我的问题是这是为每个订阅者完成的。我知道Rx使用延迟评估,但我想以某种方式限制这个热的observable每个间隔只执行一次GetPressedKeys()函数,即使有多个订阅者。这可能吗?
答案 0 :(得分:2)
是的,您可以通过Publish:
执行此操作thatObservable = thatObservable.Publish().Refcount();