static public void Show() { string fname = "fridge.bin"; Fridge fr = null; BinaryFormatter bf = new BinaryFormatter(); FileInfo fi = new FileInfo(fname); string ans = null; string result = null; if (fi.Exists) { try { using (FileStream fs = new FileStream(fname, FileMode.Open)) { fr = (Fridge)bf.Deserialize(fs); result = string.Format("Состояние объекта загружено из файла \"{0}\"", fname); } } catch (Exception) { result = string.Format("Состояние объекта не может быть загружено из файла \"{0}\", однако файл существует", fname); } } if (fr == null) { fr = new Fridge("fridge", new Dimmer(0, -10, 1)); result = string.Format("Состояние объекта задано конструктором", fname); } Console.WriteLine("{0}\nНажмите любую кнопку для продолжения", result); Console.ReadKey(false); MultithreadFridgeMenu mttMenu = new MultithreadFridgeMenu(fr); Thread menuThread = new Thread(mttMenu.Show); menuThread.Start(); do { ans = Console.ReadLine(); mttMenu.Command = ans; } while (ans != EXIT); try { using (FileStream fs = new FileStream(fname, FileMode.OpenOrCreate)) { bf.Serialize(fs, fr); } } catch (Exception) { Console.WriteLine("Сериализация провалилась"); } }
public MultithreadFridgeMenu(Fridge fr) { this.fr = fr; Command = "show"; }
static public void Show() { string fname = "fridge.bin"; Fridge fr = null; BinaryFormatter bf = new BinaryFormatter(); FileInfo fi = new FileInfo(fname); string ans = null; string result = null; if (fi.Exists) { try { using (FileStream fs = new FileStream(fname, FileMode.Open)) { fr = (Fridge)bf.Deserialize(fs); result = string.Format("Состояние объекта загружено из файла \"{0}\"", fname); } } catch (Exception) { result = string.Format("Состояние объекта не может быть загружено из файла \"{0}\", однако файл существует", fname); } } if (fr == null) { fr = new Fridge("fridge", new Dimmer(0, -10, 1)); result = string.Format("Состояние объекта задано конструктором", fname); } do { Console.Clear(); Console.WriteLine(fr); if (result != null) { Console.WriteLine("\n" + result); result = null; } Console.WriteLine("\nДействия:"); Console.WriteLine(ON + " - включить"); Console.WriteLine(OFF + " - выключить"); Console.WriteLine(OPEN + " - открыть"); Console.WriteLine(CLOSE + " - закрыть"); Console.WriteLine(HOT + " - теплее"); Console.WriteLine(COLD + " - холоднее"); Console.WriteLine(EXIT + " - выход"); Console.Write("\nВаш выбор:\t"); ans = Console.ReadLine(); switch (ans) { case ON: fr.On(); break; case OFF: fr.Off(); break; case OPEN: fr.Open(); break; case CLOSE: fr.Close(); break; case HOT: fr.IncreaseTemperature(); break; case COLD: fr.DecreaseTemperature(); break; } } while (ans != EXIT); try { using (FileStream fs = new FileStream(fname, FileMode.OpenOrCreate)) { bf.Serialize(fs, fr); } } catch (Exception) { Console.WriteLine("Сериализация провалилась"); } }