//------------------------------------------------------------------- /// <summary> /// Restore the persistent data. /// </summary> //------------------------------------------------------------------- public static void Restore() { string fileName = Data.SettingsPathName; if (fileName == null) { fileName = FileSearcher.GetSettingsFile(); } if (File.Exists(fileName)) { using (FileStream state = new FileStream(fileName, FileMode.Open)) { // Data = Serializer.Deserialize(state) as GameSettings; XmlSerializer s = new XmlSerializer(typeof(GameSettings)); Data = (GameSettings)s.Deserialize(state); } } }
/// <summary> /// Restore the persistent data. /// </summary> public static void Restore() { string fileName = Data.SettingsPathName; if (fileName == null) { fileName = FileSearcher.GetSettingsFile(); } if (File.Exists(fileName)) { bool waitForFile = false; double waitTime = 0.0; // seconds do { try { using (FileStream state = new FileStream(fileName, FileMode.Open)) { // Data = Serializer.Deserialize(state) as GameSettings; XmlSerializer s = new XmlSerializer(typeof(GameSettings)); Data = (GameSettings)s.Deserialize(state); } waitForFile = false; } catch (System.IO.IOException) { // IOException. Is the file locked? Try waiting. if (waitTime < Global.TotalFileWaitTime) { waitForFile = true; System.Threading.Thread.Sleep(Global.FileWaitRetryTime); waitTime += 0.1; } else { // Give up, maybe something else is wrong? throw; } } }while (waitForFile); } }