private bool IdentifyIsoFiles() { if (!Initialized) { Error?.Invoke("Code not Initialized"); return(false); } int counter = 0; var isoList = new DirectoryInfo(SourceDirectory).GetFiles("*.iso", SearchOption.TopDirectoryOnly); ActionStart?.Invoke(Actions.Identify, isoList.Count()); if (isoList.Count() == 0) { Error?.Invoke("No ISO files found in the Source Directory"); return(false); } LoadGameMapping(out Dictionary <string, string> mapping); foreach (var isoFile in isoList) { counter++; FileStart?.Invoke(isoFile.Name); Update?.Invoke(counter, isoList.Count(), isoFile.Name); string exception = IdentifyIso(isoFile, out string id); if (string.IsNullOrEmpty(exception)) { string newPath = Path.Combine(TargetSuccessDirectory, GetNewFilename(mapping, id, isoFile.Name)); if (isoFile.FullName == newPath) { FileOK?.Invoke(isoFile.Name); } else { if (File.Exists(newPath)) { Error?.Invoke("Duplicate File"); FileNOK?.Invoke(isoFile.Name); MoveFailedFile(isoFile.FullName, Path.Combine(TargetFailureDirectory, isoFile.Name)); } else { FileRename?.Invoke(isoFile.Name, Path.GetFileName(newPath)); FileOK?.Invoke(isoFile.Name); File.Move(isoFile.FullName, newPath); } } } else { Error?.Invoke(exception); FileNOK?.Invoke(isoFile.Name); MoveFailedFile(isoFile.FullName, Path.Combine(TargetFailureDirectory, isoFile.Name)); } FileStop?.Invoke(isoFile.Name); } SaveGameMapping(mapping); ActionStop?.Invoke(Actions.Identify); return(true); }