public void OptionsToWork(String[] keyPress) { if (keyPress == null) { throw new ArgumentNullException("Введено пустое значение команды"); } string command = ""; string option; if (keyPress.Length > 2) { option = keyPress[0] + " " + keyPress[1]; command = keyPress.Skip(2).Aggregate((x, y) => x + ' ' + y); } else { option = keyPress.Aggregate((x, y) => x + " " + y); } switch (option) { case KeyOptions.Add: { if (!_inputs.VerifyString(ref command)) { _outMess.PrintMessage("значение при добавлении не может быть пустым, "); } _outMess.PrintMessage("вызовите справку или ввидите корректное значение для добавления хоста", "\n", false); CommandAdd(command); OptionsToWork(_inputs.ValuesFromUi()); break; } case KeyOptions.Quit: _outMess.PrintMessage("Приложение завершает свою работу"); Console.CancelKeyPress -= KeyPress; Thread.Sleep(1000); Environment.Exit(0); break; case KeyOptions.Start: _outMess.PrintMessage(KeyOptions.HelloMessage); break; case KeyOptions.Ping: { if (!CommandPing(command)) { _outMess.PrintMessage("Неверная команда для старта пингования"); } Console.CancelKeyPress += KeyPress; OptionsToWork(_inputs.ValuesFromUi()); break; } case KeyOptions.Show: { try { CommandShow(); } catch (NotImplementedException e) { _outMess.PrintMessage(e.Message); } finally { OptionsToWork(_inputs.ValuesFromUi()); } break; } case KeyOptions.Help: { _outMess.PrintMessage(KeyOptions.GetHelpOptions().Aggregate((a, b) => $"{a}\n{b}"), "\n", false); OptionsToWork(_inputs.ValuesFromUi()); break; } case KeyOptions.Remove: { if (!_inputs.VerifyString(ref command, "[", "]")) { _outMess.PrintMessage("Введенные данные не верны"); } int index; if (Int32.TryParse(command, out index)) { _outMess.PrintMessage(_worker.RemoveFromConfig(index) ? "Протокол удалён" : "Ошибка удаления"); } else { _outMess.PrintMessage("Вы ввели неверный параметр, пожалуйста пробуйте ввести заново"); } OptionsToWork(_inputs.ValuesFromUi()); break; } case KeyOptions.Stop: _pinger.StopWork(); _outMess.PrintMessage("Введите процесс опроса остановлен, введите команду:"); OptionsToWork((_inputs.ValuesFromUi())); break; default: _outMess.PrintMessage( "Неизвестная опция! Повторите ввод или наберите [pinger -help] для вызова справки", "\n", true); OptionsToWork(_inputs.ValuesFromUi()); break; } }