So habe ich diesen Strom von Strings wie folgt aus:Distinct Reset nach Buffer
ABA ABCA
+--------+-------+
0 1 2 s
Ich mag würde die unterschiedlichen Werte bekommen, puffern sie für eine Sekunde und dann diese wieder von vorn zu tun. So würde Ich mag 2 Sätze von Daten haben, angesichts der Abbildung oben:
AB und ABC
ich damit begonnen:
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();
}
aber diese gibt AB, bevor ich eine Zeile in der ersten eingeben Console.ReadLine()
und dann C danach.
Ich möchte den Distinct() - Operator nach jeder Pufferzeit zurückgesetzt. Ist das möglich?
Natürlich kann ich dies tun, und habe es funktioniert:
var subscription = subject
.Buffer(TimeSpan.FromSeconds(2))
.Select(s => s.Distinct())
.Subscribe(eg =>
{
eg.Dump();
});
Aber ich frage mich, ob es mit Hilfe von Operatoren Rx getan werden kann.
Dank. Ich habe bereits mit 'GroupBy()' gespielt, aber das hat nicht so gut funktioniert. –