void CopyFileToBackup(VolumeSnapshotFile file) { try { if (!mOperation.CanContinue) { return; } file.Revision = file.Snapshot.Revision; mArchive.StoreFile(file.Snapshot.Revision, file.RelativePath, mSource.GetOnDiskPath(file.RelativePath), new ArchiveFileDelegate(Backup_ArchiveStoreFile), file); ulong runningSize = mFilesTotalSizeRunning + file.FileSize; if (runningSize > mFilesTotalSize) { runningSize = mFilesTotalSize; } if (Progress != null) { Progress(mFileRunningCount + 1, mFileTotalCount, runningSize, mFilesTotalSize); } } catch (System.Exception e) { mOperation.Cancel(false); mComparator.Cancel(); FileSync.__LogError(this, "Copy file failed '" + file.RelativePath + "'", e); } mFileRunningCount++; mFilesTotalSizeRunning += file.FileSize; }