private IEnumerable <string> LoadingWork(HeliosProfile profile, Dispatcher dispatcher) { XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; settings.IgnoreWhitespace = true; TextReader reader = new StreamReader(profile.Path); XmlReader xmlReader = XmlReader.Create(reader, settings); HeliosSerializer deserializer = new HeliosSerializer(dispatcher); int profileVersion = deserializer.GetProfileVersion(xmlReader); if (profileVersion != 3) { profile.IsInvalidVersion = true; } else { foreach (string progress in deserializer.DeserializeProfile(profile, xmlReader)) { yield return(progress); } } xmlReader.Close(); reader.Close(); }
public HeliosProfile LoadProfile(string path, Dispatcher dispatcher) { HeliosProfile profile = null; try { if (File.Exists(path)) { bool rewrite = false; profile = new HeliosProfile(false); profile.Path = path; profile.Name = Path.GetFileNameWithoutExtension(path); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; settings.IgnoreWhitespace = true; TextReader reader = new StreamReader(path); XmlReader xmlReader = XmlReader.Create(reader, settings); HeliosSerializer deserializer = new HeliosSerializer(dispatcher); int profileVersion = deserializer.GetProfileVersion(xmlReader); if (profileVersion != 3) { profile.IsInvalidVersion = true; } else { deserializer.DeserializeProfile(profile, xmlReader); } xmlReader.Close(); reader.Close(); profile.IsDirty = false; profile.LoadTime = Directory.GetLastWriteTime(path); if (rewrite) { SaveProfile(profile); } } } catch (Exception e) { ConfigManager.LogManager.LogError("Error loading profile " + path, e); profile = null; } return(profile); }