【发布时间】:2012-12-19 00:03:35
【问题描述】:
我一直在考虑将文件观察程序包装在可观察对象中以帮助处理事件,但我在弄清楚如何从中获得我想要的行为时遇到了一些麻烦。文件监视器监视放置文件的目录。当第一次将文件放入该目录时,文件观察程序会触发 Created 事件。但是,如果文件很大或网络连接速度很慢,则在文件更新时会触发一系列 Changed 事件。我不想在文件写完之前处理文件,所以我真正需要的是这个时间线
|Created |Changed |Changed |Changed
________________________________________________
^Write starts ^Write finishes ^Processing Starts
我查看了许多在 Rx 中过滤事件的方法,但我无法得到我需要的“一旦文件文件在 X 秒内没有更改就触发函数”。油门不好,因为它会在中间丢失事件。缓冲区不好,因为事件可能发生在缓冲区边界上。
我曾考虑过使用超时,但我并没有因为它们引发异常而疯狂,我希望在写入文件时开始处理,而不是在没有更多事件时开始。
Reactive Extensions vs FileSystemWatcher 有一个类似的问题,但从未真正解决。
有没有一种方法可以让我轻松做到这一点?我确信这不是一个不常见的用例。
【问题讨论】:
标签: c# system.reactive