private void OnRenameClick(object sender, RoutedEventArgs e) { try { OpenFileDialog dlg = new OpenFileDialog { Filter = "Scenes (*.scn, *.bin)|*.scn;*.bin", Multiselect = true }; if (dlg.ShowDialog() != true) { return; } ConcurrentDictionary <int, Tuple <int, string> > dic2 = new ConcurrentDictionary <int, Tuple <int, string> >(); Parallel.ForEach(dlg.FileNames, filePath => { using (FileStream input = File.OpenRead(filePath)) { BattleBinFileReader er = new BattleBinFileReader(input); er.ReadHeader(); er.ReadDescriptorHeader(); IsoTableEntryInfo info = IsoTableEntryInfo.TryParse(filePath); string fileName = er.ReadFileName(); dic2.TryAdd(info.Index, Tuple.Create(info.DefectiveIndex, fileName)); Log.Message(dic2[info.Index].Item2); } }); using (FileStream fs = File.Create(@"W:\\Indices.bin")) { using (Stream input = File.OpenRead(@"C:\Git\C#\Spira\Spira.ISO\SLPS_250.88\AdditionalFileInformation.bin")) input.CopyTo(fs); using (BinaryWriter bw = new BinaryWriter(fs)) { foreach (KeyValuePair <int, Tuple <int, string> > pair in dic2) { bw.Write(pair.Key); bw.Write(pair.Value.Item1); bw.Write((int)(IsoAdditionalInfo.PS2KnownName | IsoAdditionalInfo.PS2KnownSignature)); bw.Write((int)FFXFileSignatures.Scn); bw.Write(pair.Value.Item2); } } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }