仅同步修改的文件

时间:2011-10-06 22:36:14

标签: c# microsoft-sync-framework

我使用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();只同步已更改的文件同时添加或删除不同步文件?

1 个答案:

答案 0 :(得分:3)

您需要加入ApplyingChange事件。

在应用更改之前将其称为,这样您就有机会覆盖默认行为。

  

要跳过更改,请将SkipChange属性设置为true。跳过的更改将不会应用于目标副本。对于每次跳过的更改,将SkippedChangeEventArgs.SkipReason设置为ApplicationRequest来触发SkippedChange事件。

因此,如果ApplyingChangeEventArgs.ChangeTypeCreateDelete,请将ApplyingChangeEventArgs.SkipChange设置为true。然后,只有那些重命名或更新的文件才会同步。