static void Main(string[] args) { rnd = new Random(); expirationQueue = new List <Tuple <int, UserRequest> >(); expirationTimer = new System.Timers.Timer(); expirationTimer.AutoReset = true; expirationTimer.Elapsed += RequestExpired; stopwatch = new Stopwatch(); string Command; while (!SetUp.On()) { ; } Console.WriteLine("Ресурсы в модели:"); for (int i = 0; i < Model.vRes_s.Count; i++) { Console.WriteLine(Model.vRes_s[i].ToString()); } Command = "Command"; isPaused = false; do { Model.WriteToFile(); if (isPaused) { continue; } Console.WriteLine("Введите команду:"); Command = Console.ReadLine(); Command = Command.ToUpper(); try { if (Command == "REQUEST") { pauseAll(); Console.WriteLine(Model.Request()); resumeAll(); } if (Command == "OCCUPY") { pauseAll(); Console.WriteLine("Введите номер ресурса:"); Model.Occupy(Console.ReadLine()); resortExpirationQueue(true); stopwatch.Start(); } if (Command == "FREE") { pauseAll(); Console.WriteLine("Введите номер ресурса:"); Model.Free(Console.ReadLine()); resortExpirationQueue(false); stopwatch.Start(); } } catch (OverflowException) { Console.WriteLine("Такого ресурса нет."); } catch (FormatException) { Console.WriteLine("Такого ресурса нет."); } catch (ResIdInvalid) { Console.WriteLine("Такого ресурса нет."); } catch (ResWasFree) { Console.WriteLine("Ресурс был свободен."); } catch (ResAreBusy) { Console.WriteLine("Все ресурсы заняты."); } catch (ResIsBusy) { Console.WriteLine("Ресурс уже занят."); } resumeAll(); }while (Command != ""); }
static void Main(string[] args) { string Command = "Continue"; while (!SetUp.On()) { ; } do { if (flg) { continue; } using (StreamWriter writetext = new StreamWriter(SetUp.Path)) { string Reqstr = " "; Reqstr += Model.RecList.Count; writetext.WriteLine(Reqstr); Reqstr = " "; for (int k = 0; k < Model.RecList.Count; k++) { Reqstr += Model.RecList[k].Count + " "; for (int z = 0; z < Model.RecList[k].Count; z++) { Reqstr += Model.RecList[k][z].ToString() + " "; } writetext.WriteLine(Reqstr); Reqstr = " "; } string Questr = " "; Questr += Model.QueList.Count; for (int i = 0; i < Model.QueList.Count; i++) { Questr += " " + Model.QueList[i].Item1.ToString() + " " + Model.QueList[i].Item2.ToString(); } writetext.WriteLine(Questr); writetext.WriteLine(Model.vRes_s.Length); for (int j = 0; j < Model.vRes_s.Length; j++) { writetext.WriteLine(Model.vRes_s[j].ToString()); } writetext.WriteLine(Model.CntOfFreeRes); writetext.WriteLine(Model.CrtIndexInList); } Console.WriteLine("Введите команду:"); Command = Console.ReadLine(); Command = Command.ToUpper(); try { if (Command == "REQUEST") { Console.WriteLine(Model.Request()); } if (Command == "OCCUPY") { Console.WriteLine("Введите количество ресурсов:"); Model.Occupy(Console.ReadLine()); Console.WriteLine("Ресурсы стали занятыми."); } ; if (Command == "FREE") { Console.WriteLine("Введите номер запроса:"); Model.Free(Console.ReadLine()); if (Model.QueList.Count > 0) { if (Model.CntOfFreeRes >= Model.QueList[0].Item2) { Console.WriteLine("Заявка вышла из очереди. Ресурсы заняты."); Model.Occupy(Convert.ToString(Model.QueList[0].Item2)); if (Model.QueList.Count == 1) { Model.QueList.RemoveAt(0); timer.Change(Timeout.Infinite, Timeout.Infinite); } else { timer.Change(Model.QueList[1].Item1 * 1000, Model.QueList[1].Item1 * 1000); Model.QueList.RemoveAt(0); } } } } ; } catch (OverflowException) { Console.WriteLine("Такого ресурса нет."); } catch (FormatException) { Console.WriteLine("Такого ресурса нет."); } catch (ResIdInvalid) { Console.WriteLine("Вы пытаетесь занять больше ресуросов чем есть в системе или вы ввели отрицательное число."); } catch (RecIdInvalid) { Console.WriteLine("Такого запроса не существут или вы ввели отрицательное число"); } catch (ResWasFree) { Console.WriteLine("Ресурс был свободен."); } catch (ResAreBusy excp) { Console.WriteLine("Все ресурсы заняты. Хотите встать в очередь? Y/N?"); string chs; chs = Console.ReadLine(); int temp = (short)excp.Data["ResCnt"]; Console.WriteLine(temp); if (chs.ToUpper() == "Y") { Model.queue(temp); } else { Console.WriteLine("Запрос анулирован"); } } catch (ResIsBusy) { Console.WriteLine("ресурс уже занят."); } if (Model.QueList.Count == 0) { timer.Change(Timeout.Infinite, Timeout.Infinite); } else { timer.Change(Model.QueList[0].Item1 * 1000, Model.QueList[0].Item1 * 1000); StartTime = DateTime.Now; } for (int i = 0; i < Model.vRes_s.Length; i++) { Console.Write(Model.vRes_s[i] + " "); } Console.WriteLine(); }while (Command != ""); }