private void MirrorGroup(FileGroup group) { using (_engine = new MirrorMaker(_progress)) { try { _engine.StartingDirectory += OnStartingDirectory; _engine.StartingFile += OnStartingFile; _engine.ItemHandlingError += OnItemHandlingError; string destinationSubFolder = group.GetDestinationSubFolder(DestinationRootForThisUser); _progress.WriteVerbose("[{0}] Source={1}", group.Name, group.RootFolder); _progress.WriteVerbose("[{0}] Destination={1}", group.Name, destinationSubFolder); //_engine.PreviewMode = false; _engine.Run(group.RootFolder, destinationSubFolder); if (_engine.WasCancelled) { _currentGroup.Disposition = FileGroup.DispositionChoice.Cancelled; } else { group.Disposition = FileGroup.DispositionChoice.WasBackedUp; } } catch (IOException error) { _gotIOExceptionProbablyDiskFull = true; //enhance: we could clarify that it was partially backed up _currentGroup.Disposition = FileGroup.DispositionChoice.NotEnoughRoom; _progress.WriteWarning(error.Message); } if (GroupProgress != null) { GroupProgress.Invoke(); } } }