Синхронизация только измененных файлов

Я использую 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(); синхронизировались ТОЛЬКО файлы, которые были изменены, а НЕ файлы синхронизации, добавленные или удаленные?


person Icemanind    schedule 06.10.2011    source источник


Ответы (1)


Вам нужно будет подключиться к ApplyingChange событие.

Это вызывается до изменения, что дает вам возможность перезаписать поведение по умолчанию.

Чтобы пропустить изменение, задайте для свойства SkipChange значение true. Пропущенное изменение не будет применено к целевой реплике. Событие SkipedChange будет запущено со SkipedChangeEventArgs.SkipReason, для которого задано значение ApplicationRequest для каждого пропущенного изменения.

Таким образом, если ApplyingChangeEventArgs.ChangeType равно Create или Delete, то установите ApplyingChangeEventArgs.SkipChange на true. Тогда будут синхронизированы только те файлы, которые были переименованы или обновлены.

person ChrisF    schedule 06.10.2011