只同步修改过的文件
本文关键字:文件 修改 同步 | 更新日期: 2023-09-27 18:10:42
我正在使用Microsoft Sync Framework和c#开发以下函数,用于在两个目录之间同步文件:
private void InitialSync()
{
var sourceId = new SyncId(Guid.NewGuid());
var destId = new SyncId(Guid.NewGuid());
var sourceReplica = new FileSyncProvider(sourceId.GetGuidId(), _firstPath);
var destReplica = new FileSyncProvider(destId.GetGuidId(), _secondPath);
var agent = new SyncOrchestrator
{
LocalProvider = sourceReplica,
RemoteProvider = destReplica,
Direction = SyncDirectionOrder.UploadAndDownload
};
agent.Synchronize();
}
这段代码工作得很好。问题是,它不仅会同步已更改的文件,还会同步添加到任意目录中的文件和从任意目录中删除的文件。是否有办法使agent.Synchronize();
只同步已更改的文件,不同步文件添加或删除?
你需要钩入ApplyingChange事件。
在更改应用之前,它被称为,这样您就有机会覆盖默认行为。
要跳过更改,将SkipChange属性设置为true。跳过的更改将不会应用于目标副本。SkippedChange事件将由SkippedChangeEventArgs触发。对于跳过的每个更改,SkipReason设置为ApplicationRequest。
因此,如果ApplyingChangeEventArgs.ChangeType
是Create
或Delete
,则将ApplyingChangeEventArgs.SkipChange
设置为true
。然后,只有那些重命名或更新的文件将被同步。