C# 在缓冲区后重置不同
我有这样的字符串流:C# 在缓冲区后重置不同,c#,system.reactive,C#,System.reactive,我有这样的字符串流: ABA ABCA +--------+-------+ 0 1 2 s 我希望得到不同的值,将它们缓冲一秒钟,然后重新执行。因此,我希望有两组数据,如上图所示: AB和ABC 我从这个开始: void Main() { var subject = new Subject<string>(); var subscription = subject .Distinct() .Buffer
ABA ABCA
+--------+-------+
0 1 2 s
我希望得到不同的值,将它们缓冲一秒钟,然后重新执行。因此,我希望有两组数据,如上图所示:
AB和ABC
我从这个开始:
void Main()
{
var subject = new Subject<string>();
var subscription = subject
.Distinct()
.Buffer(TimeSpan.FromSeconds(1))
.Subscribe(eg =>
{
eg.Dump();
}
);
subject.OnNext("A");
subject.OnNext("B");
subject.OnNext("A");
Console.ReadLine();
subject.OnNext("A");
subject.OnNext("B");
subject.OnNext("C");
subject.OnNext("A");
Console.ReadLine();
subscription.Dispose();
}
但我想知道是否可以使用Rx运营商来实现 最后的解决方案应该可以正常工作。如果您想使用
IObservable
停留在Rx着陆区,您应该切换到操作员:
var subscription = subject
.Window(TimeSpan.FromSeconds(1))
.Select(o => o.Distinct())
.Merge()
.Subscribe(eg =>
{
eg.Dump();
});
谢谢我已经在使用
GroupBy()
玩游戏了,但结果没有这个好。
var subscription = subject
.Window(TimeSpan.FromSeconds(1))
.Select(o => o.Distinct())
.Merge()
.Subscribe(eg =>
{
eg.Dump();
});