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;
 }