コード例 #1
0
ファイル: Menu.cs プロジェクト: Mrak-IW/Dot-net-basics
		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("Сериализация провалилась");
			}
		}
コード例 #2
0
		public MultithreadFridgeMenu(Fridge fr)
		{
			this.fr = fr;
			Command = "show";
		}
コード例 #3
0
ファイル: Menu.cs プロジェクト: Mrak-IW/Dot-net-basics
		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("Сериализация провалилась");
			}
		}