public bool GetDevices(string directory) { try { string[] files = Directory.GetFiles(directory); Parallel.ForEach( files, f => { try { Definition d = new Definition(f); if (d.isBase) { d.LoadRomId(); } lock (DefDictionary) { if (DefDictionary.ContainsKey(d.internalId)) { Trace.WriteLine("Duplicate definition found for: " + d.internalId + " in file: " + f + " Check the definitions!!"); Trace.WriteLine("Definition was previously found in file: " + DefDictionary[d.internalId].defPath); } else { DefDictionary.Add(d.internalId, d); lock (IdentList) { IdentList.Add(d.internalId); DeviceCount++; } } } } catch (System.Exception excpt) { Trace.WriteLine("Error reading XML file " + f); Trace.WriteLine(excpt.Message); } }); List <string> directories = Directory.GetDirectories(directory).ToList(); Parallel.ForEach( directories, d => { if (!GetDevices(d)) { return; } }); return(true); } catch (System.Exception excpt) { Trace.WriteLine(excpt.Message); } return(false); }
public bool GetDevices(string directory) { try { string[] files = Directory.GetFiles(directory); Parallel.ForEach( files, f => { try { Definition d = new Definition(f); if (d.isBase) d.LoadRomId(); lock(DefDictionary) { if (DefDictionary.ContainsKey(d.internalId)) { Trace.WriteLine("Duplicate definition found for: " + d.internalId + " in file: " + f + " Check the definitions!!"); Trace.WriteLine("Definition was previously found in file: " + DefDictionary[d.internalId].defPath); } else { DefDictionary.Add(d.internalId, d); lock (IdentList) { IdentList.Add(d.internalId); DeviceCount++; } } } } catch (System.Exception excpt) { Trace.WriteLine("Error reading XML file " + f); Trace.WriteLine(excpt.Message); } }); List<string> directories = Directory.GetDirectories(directory).ToList(); Parallel.ForEach( directories, d => { if (!GetDevices(d)) { return; } }); return true; } catch (System.Exception excpt) { Trace.WriteLine(excpt.Message); } return false; }