所以我有这样的字符串流:
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();
}
但是在我输入第一个Console.ReadLine()
的一行之前输出AB,之后输出C.
我想要的是在每个缓冲期后重置Distinct()运算符。这可能吗?
当然,我可以做到这一点并让它发挥作用:
var subscription = subject
.Buffer(TimeSpan.FromSeconds(2))
.Select(s => s.Distinct())
.Subscribe(eg =>
{
eg.Dump();
});
但我想知道是否可以使用Rx运算符完成。
答案 0 :(得分:2)
你最终的解决方案应该可以正常工作。如果您希望使用string path = Path.Combine(Environment.CurrentDirectory, @"Data\", fileName);
XmlTextReader reader = new XmlTextReader(path);
CreateTree(reader, tree, null);
reader.Close();
留在Rx土地,则应切换到Window
运营商:
IObservable