给定
// observable getting files in folder as they are created
IObservable<string> files = GetFilesAsTheyAreCreated();
和功能
// gets lines of the file as they are written
IObservable<string> GetLines(string filePath)
我想创建返回写入上次创建文件的行的可观察量。随着新文件的创建,我想开始从该文件中获取行。现在我有以下代码:
var lines = files.SelectMany(f => GetLines(f));
这样做的问题是我也将所有行添加到旧文件中。有没有办法忽略那些老台词?
注意:我最感兴趣的是取消可观察GetLines
因为它在新线程上运行。
这可以通过内置运算符实现吗?
你需要的非常简单:
var lines = files.Select(f => GetLines(f)).Switch();
.Switch()
运算符通过仅返回最新的外部可观察值的内部值,将IObservable<IObservable<T>>
转换为IObservable<T>
。正是你想要的。