protected override void OnExecute(string Entity) { var Code = false; var OldSizeText = ConfigHelper.GetValue($"{Entity}_Size"); if (string.IsNullOrWhiteSpace(OldSizeText)) { Code = true; } if (!long.TryParse(OldSizeText, out long OldSize)) { Code = true; } var NewSize = PathHelper.GetFileSize(Entity); if (OldSize != NewSize) { ConfigHelper.SetValue($"{Entity}_Size", NewSize.ToString()); Code = true; } var OldMd5 = ConfigHelper.GetValue($"{Entity}_MD5"); if (string.IsNullOrWhiteSpace(OldMd5)) { Code = true; } var NewMd5 = PathHelper.FileMD5(Entity); if (OldMd5 != NewMd5) { ConfigHelper.SetValue($"{Entity}_MD5", NewMd5); Code = true; } OnExecuted?.Invoke(Entity, Code); }
private void StartCompressed(string SourceRootPath, string DestRootPath, List <string> FileList, Action Callback) { Log("Compressed Begin"); var Entites = GenerateCompressItemEntities(SourceRootPath, DestRootPath, FileList); SetValueToProgressBar(ProgressBarCompress, 0, Entites.Count, 0); TotalFileCount_ = Entites.Count; var Job = new CompressJobSystem(Entites.ToArray(), Environment.ProcessorCount); Job.OnCompleted += () => { Log("Compressed End"); Callback?.Invoke(); }; Job.OnExecuted += (Entity, Code) => { var FileOriginSize = PathHelper.GetFileSize(Entity.InputFilePath); TotalFileSize_ += FileOriginSize; if (Code) { var FileCompressedSize = PathHelper.GetFileSize(Entity.OutputFilePath); CompressedFileCount_++; CompressedFileSize_ += FileCompressedSize; Log($"{Entity.InputFilePath} Compressed : {FileOriginSize / 1024}Kb -> {FileCompressedSize / 1024}Kb!"); } else { Log($"{Entity.InputFilePath} Compress Error!"); } AddValueToProgressBar(ProgressBarCompress, 1); SetLabel(LabelInfo, $"Handle Percent : {((double)CompressedFileCount_ / (double)TotalFileCount_ * 100.0d):00.00}% | Compressed Info : {CompressedFileSize_}/{TotalFileSize_} - {((double)CompressedFileSize_ / (double)TotalFileSize_ * 100.0d):00.00}%"); }; Job.Execute(); }