C# 与Rx.Net中的.onBackpressureBuffer()等效?

C# 与Rx.Net中的.onBackpressureBuffer()等效?,c#,system.reactive,rx.net,C#,System.reactive,Rx.net,有一个源以异步方式发送项目,在我的例子中,以10个项目的顺序在几秒钟内发送 我想处理所有的问题 按出现顺序 一次一个 处理每个问题可能需要很长时间(如1-5秒) 处理一个项目时可能会有新项目 目前,我正在将一个Java应用程序移植到C。在RxJava世界中有onBackpressureBuffer方法,而在Rx.Net中有许多不同的方法,无法找出等效方法 我想我可以零延迟地使用Buffer(),并使用生成的可枚举项,但似乎有点老套 编辑:投票前请阅读评论Rx.NET不支持背压,也不能像RxJ

有一个源以异步方式发送项目,在我的例子中,以10个项目的顺序在几秒钟内发送

  • 我想处理所有的问题
  • 按出现顺序
  • 一次一个
  • 处理每个问题可能需要很长时间(如1-5秒)
  • 处理一个项目时可能会有新项目
目前,我正在将一个Java应用程序移植到C。在RxJava世界中有
onBackpressureBuffer
方法,而在Rx.Net中有许多不同的方法,无法找出等效方法

我想我可以零延迟地使用
Buffer()
,并使用生成的可枚举项,但似乎有点老套


编辑:投票前请阅读评论

Rx.NET不支持背压,也不能像RxJava那样:必须设计协议,以便在生产者和消费者之间有一个请求通道。从概念上讲,异步枚举可以以逐项传递的形式(在某些情况下称为异步拉动、每项承诺、连续性等)获得反压力


有一个C#库与RxJava
Flowable
类型的特性匹配得比较好(但不是100%):它还可以与IObservable进行互操作,从而在需要时与Rx.NET进行互操作。

Rx.NET不支持背压,也不能像RxJava那样:必须设计协议,以便在生产者和消费者之间有一个请求通道。从概念上讲,异步枚举可以以逐项传递的形式(在某些情况下称为异步拉动、每项承诺、连续性等)获得反压力


有一个C#库与RxJava
Flowable
类型的特性匹配得比较好(但不是100%):这也可以与
IObservable
进行互操作,如果需要,也可以与Rx.NET进行互操作。

我在c中想,如果你使用fromsync或async to observable,那么除非你使用ObserveOn,否则你将在单个线程上按顺序处理。@Sentinel我认为Rx通常是这样工作的。假设有两个线程。一个人生产,一个人消费,而后者需要时间去做。我不想让后者说“停止发送我,我不能处理所有的事情”,而是说“也会处理的,只是等待”。我迷路了。你为什么不观察并并行处理所有事情呢?或者,就像最近的另一个问题一样,如果你想要一个优先队列,你可以使用扫描来建立一个要处理的事情的列表,你的问题不清楚你到底想要什么?我在c#中想,如果你使用fromasync或async toobservable,那么除非你使用ObserveOn,否则你将在单个线程上按顺序处理?@Sentinel我认为RX通常是这样工作的。假设有两个线程。一个人生产,一个人消费,而后者需要时间去做。我不想让后者说“停止发送我,我不能处理所有的事情”,而是说“也会处理的,只是等待”。我迷路了。你为什么不观察并并行处理所有事情呢?或者,就像在最近的另一个问题中一样,如果你想要一个优先队列,你可以使用扫描来建立一个要处理的事情的列表。实际上,你的问题根本不清楚你想要什么