IObservable 序列完成前的聚合函数

use*_*007 2 c# system.reactive

有没有办法在序列完成之前将聚合函数(Max、Count、....)与 Buffer 一起使用。完成后这将产生结果,但继续流它不会给出任何结果?

我期待有什么方法可以使这个工作与缓冲区一起工作?

IObservable<long> source;
IObservable<IGroupedObservable<long, long>> group  = source
        .Buffer(TimeSpan.FromSeconds(5))
        .GroupBy(i => i % 3);

IObservable<long> sub = group.SelectMany(grp => grp.Max());

sub.Subscribe(l =>
{
    Console.WriteLine("working");
});
Run Code Online (Sandbox Code Playgroud)

Bra*_*don 5

使用Scan代替Aggregate。Scan 的工作方式与 Aggregate 类似,不同之处在于它随着流的前进发送中间值。这对“运行总计”很有用,这似乎是您所要求的。