private bool AddFiles(List <string> aFiles, bool nested, Dictionary <string, ArchiveItem> seen, PartFileConsumer consumer) { var added = false; var files = aFiles.ToArray(); foreach (string file in files) { try { var info = new FileInfo(file); if (!info.Exists) { continue; } if ((info.Attributes & FileAttributes.Directory) == FileAttributes.Directory) { continue; } if (consumer.Consume(info)) { aFiles.Remove(file); continue; } var ext = info.Extension.ToUpperInvariant(); if (seen.ContainsKey(info.FullName.ToUpperInvariant())) { continue; } ArchiveItem item = CreateItem(nested, info, ext); if (item == null) { continue; } seen[info.FullName.ToUpperInvariant()] = item; added = true; Files.Items.Add(item); } catch (Exception ex) { Console.Error.WriteLine(ex); } } return(added); }