【问题标题】:Syncing modified files only仅同步修改后的文件
【发布时间】:2011-10-06 22:36:13
【问题描述】:

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

【问题讨论】:

    标签: c# microsoft-sync-framework


    【解决方案1】:

    您需要挂钩ApplyingChange 事件。

    这在应用更改之前被调用,因此您有机会覆盖默认行为。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2020-03-28
      • 2019-01-13
      • 2012-11-21
      • 1970-01-01
      • 2012-01-03
      • 2017-08-01
      相关资源
      最近更新 更多