反应式扩展C#-如何在执行(相对)长时间运行的订阅逻辑时跳过消息

反应式扩展C#-如何在执行(相对)长时间运行的订阅逻辑时跳过消息,c#,system.reactive,consumption,C#,System.reactive,Consumption,我对所有反应式编程概念都不熟悉,我需要处理以下情况——我有一个运行时间相对较长的使用者逻辑,在某种程度上,当前面的消息仍在处理时,可能会生成两条消息 我需要跳过这些消息,并防止调用这些消息的相关消费逻辑。下面是一个例子(用C#) IObservable流=。。。 SubscribeOn(TaskPoolScheduler.Default).subscribe(ProcessMessage,cancellationToken); 假设每5毫秒就有一条消息被推送到流中:(1、2、3、4、5) Pr

我对所有反应式编程概念都不熟悉,我需要处理以下情况——我有一个运行时间相对较长的使用者逻辑,在某种程度上,当前面的消息仍在处理时,可能会生成两条消息

我需要跳过这些消息,并防止调用这些消息的相关消费逻辑。下面是一个例子(用C#)

IObservable流=。。。
SubscribeOn(TaskPoolScheduler.Default).subscribe(ProcessMessage,cancellationToken);
假设每5毫秒就有一条消息被推送到流中:(1、2、3、4、5)

ProcessMessage
方法可能需要10-15毫秒才能完成,这意味着当它接收到消息
1
时,当生成
2
3
时,它仍将工作

我需要跳过对
2
3
调用
ProcessMessage
,直接赶上
4
,或者下一条未处理的消息


反应式扩展中是否有任何内置结构允许我处理这种特殊情况?

请查看操作员。“这可能正是你所需要的。”西奥多·佐利亚斯,事实上,这正是我想要的。非常感谢。我将试着把这个问题作为一个复制品来结束,是的,这是一个非常优雅的解决方案,因为你应该可以单独把你自己的问题作为一个复制品来结束。我以这种方式结束了我自己的几个问题。检查一下接线员。“这可能正是你所需要的。”西奥多·佐利亚斯,事实上,这正是我想要的。非常感谢。我将试着把这个问题作为一个复制品来结束,是的,这是一个非常优雅的解决方案,因为你应该可以单独把你自己的问题作为一个复制品来结束。我以这种方式结束了我自己的几个问题。
IObservable<int> stream  = ...
stream.SubscribeOn(TaskPoolScheduler.Default).Subsribe(ProcessMessage, cancellationToken);