Синхронизация только измененных файлов - PullRequest
1 голос
/ 07 октября 2011

Я использую 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 Ответ

3 голосов
/ 07 октября 2011

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

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

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

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

...