public int Execute() { var synchronizer = new FileSystemSynchronizer { SynchArchiveFile = Archive, SynchDiffLastWriteTimeFile = LastWriteTime, SynchDiffLengthFile = Length, }; using (FileContinueWorkFactory continueWorkFactory = CreateContinueWorkFactory()) { var fileCopy = new StreamFileCopy(); fileCopy.ProcessChanged += fileCopy_ProcessChanged; fileCopy.CopyAttribute = true; fileCopy.CopyCreationTime = true; fileCopy.CopyLastAccessTime = true; fileCopy.CopyLastWriteTime = true; fileCopy.BufferSize = 1024 * 1024 * 4; fileCopy.ContinueWorkFactory = continueWorkFactory; synchronizer.FileSynchronizer = fileCopy; synchronizer.ValidateDirectory += synchronizer_ValidateDirectory; FileSystemSynchronizer.StatResult result = synchronizer.Stat(new DirectoryInfo(Source), new DirectoryInfo(Destination)); synchronizer.Synchronize(result, DeleteFileCallback, DeleteDirectoryCallback, CreateDirectoryCallback, CopyFileCallback); return 0; } }
public void When_Synced_One_Way() { var instance = new FileSystemSynchronizer(MockChangeDetector.Object, MockUpdater.Object); bool iterationComplete = false; instance.IterationCompleted += delegate(object sender, EventArgs args) { iterationComplete = true; }; instance.Start(MockSource.Object, MockDestination.Object, new SyncronizationOptions() { ConflictBehavior = ConflictBehavior.Skip, PollingInterval = TimeSpan.FromMilliseconds(10), SyncDirection = SyncDirection.OneWay, SearchOption = SearchOption.AllDirectories } ); while (!iterationComplete) Thread.SpinWait(10); }