/// <summary>
 /// 恢复已经转移的缓存文件
 /// </summary>
 /// <param name="workerModel"></param>
 private void RestoreCacheFilesToPreviousPath(MoveCacheBackgroundWorkerModel workerModel)
 {
     try
     {
         foreach (var data in workerModel.MovedFiles)
         {
             File.Move(data.NewFilePath, data.PreviousFilePath);
         }
         //删除文件夹下所有的空文件夹
         FolderUtil.DeleteEmptyFolder(workerModel.UserDefinedFolder, false);
     }
     catch (Exception e)
     {
         LogHelper.Error("恢复缓存失败,异常信息为:" + e.Message);
     }
 }
        private void MoveCacheWidthBackgroundWorker(string currentDesktopFolder, string destDataPathFolder)
        {
            var workerModel = new MoveCacheBackgroundWorkerModel()
            {
                DeskTopFolder          = currentDesktopFolder,
                DesktopFoldersAndFiles = FolderUtil.GetSubFoldersAndFiles(currentDesktopFolder),
                UserDefinedFolder      = destDataPathFolder,
            };

            using (var backgroundWorker = new BackgroundWorker()
            {
                WorkerReportsProgress = true
            })
            {
                backgroundWorker.ProgressChanged    += MoveCacheBackgroundWorker_ProgressChanged;
                backgroundWorker.DoWork             += MoveCacheBackgroundWorker_DoWork;
                backgroundWorker.RunWorkerCompleted += MoveCacheBackgroundWorker_RunWorkerCompleted;
                backgroundWorker.RunWorkerAsync(workerModel);
            }
        }
        private void MoveCacheFiles(List <string> allCacheFiles, ref long handledSize, MoveCacheBackgroundWorkerModel workerModel,
                                    long totalSize, BackgroundWorker worker)
        {
            var currentOperationDetail = $"正在转移。。。";

            worker.ReportProgress(-1, new ProgressChangedContent()
            {
                OperationDetail = currentOperationDetail,
            });

            var currentOperationError = string.Empty;
            int filesCount            = allCacheFiles.Count;
            int moveIndex             = 0;

            foreach (var cacheFilePath in allCacheFiles)
            {
                try
                {
                    moveIndex++;
                    handledSize += new FileInfo(cacheFilePath).Length;

                    //移动文件
                    var newFilePath = GetNewFilePath(cacheFilePath, workerModel.DeskTopFolder, workerModel.UserDefinedFolder);
                    FileUtil.Move(cacheFilePath, newFilePath);

                    //记录已经转移的缓存文件
                    workerModel.MovedFiles.Add(new MovedFileDataMode(cacheFilePath, newFilePath));

                    //删除原有文件
                    FileUtil.Delete(cacheFilePath);
                }
                catch (Exception e)
                {
                    LogHelper.Error(e.Message);
                    currentOperationError = e.Message;
                    throw;
                }
                finally
                {
                    var cleanCacheProgressDetail = $"{moveIndex}/{filesCount}";
                    //报告进度
                    var progress = totalSize == 0 ? 100 : handledSize * 100 / totalSize;
                    worker.ReportProgress(Convert.ToInt32(progress), new ProgressChangedContent()
                    {
                        ProgressDetail = cleanCacheProgressDetail,
                        OperationError = currentOperationError
                    });
                }
            }

            //删除产品文件夹及其下所有的空文件夹
            FolderUtil.DeleteEmptyFolder(workerModel.DeskTopFolder, false);
            //报告进度
            worker.ReportProgress(-1, new ProgressChangedContent()
            {
                OperationOutput = $"转移完成.."
            });
        }