我正在创建一个应用程序来同步远程和本地文件树,使用FileSystemWatcher类进行本地更改,以及Google的Drive Changes(List)API。
远程进行更改时,会在“更改”列表中检测到更改,并将其应用于用户本地驱动器。
然后触发FileSystemWatcher类以推回(回显)本地更改。
如果我没有跳过在推送本地更改时引发的远程事件,那么这将无限循环。
我可以这样做:
Watcher.EnableRaisingEvents = false;
DoWorkToFileTree();
Watcher.EnableRaisingEvents = true;
但这似乎不是很好的代码。另外,显然,如果在工作完成时进行了更改,则会遗漏。
我也担心我跳过远程事件会让我错过在本地事件被推送时发生的任何远程事件。
如果我让回声事件升高,就会发生循环。 如果我不这样做,我将错过处理事件时发生的变化。
我还想过用某种形式的“IgnoreMe”属性来标记事件,但这似乎很危险;这是一个好主意吗?
最好的方法是什么?
我觉得我错过了一些东西,这是一种处理同步的标准技术。