public static void StartListening() { s_IsRunning = true; do { var line = ReadLine.Read().Trim(); if (!string.IsNullOrEmpty(line)) { if (line.Equals("exit", StringComparison.OrdinalIgnoreCase)) { break; } try { OnCommandExecute?.Invoke(line); } catch (Exception ex) { Console.WriteLine(ex.ToString(), Color.DarkRed); Debugger.Break(); } } } while (s_IsRunning); }
/// <summary> Выполнить список команд (в одной транзакции) </summary> public List <DataCommand> ExecuteNonQuery(DataConnection ot, int batchSize = 0) { var i = 0; LastExecutingCommandIndex = -1; foreach (var cmd in CommandList) { LastExecutingCommandIndex++; cmd.ExecuteNonQuery(ot); OnCommandExecute?.Invoke(cmd); if (batchSize > 0 && i++ > batchSize) { ot.Commit(true); i = 0; } } return(CommandList); }
public static void Execute(ICommand command, object parameter, IInputElement target) { if (command == null) { return; } RoutedCommand rcmd = command as RoutedCommand; if (rcmd == null) { command.Execute(parameter); } else { rcmd.Execute(parameter, target); } if (OnCommandExecute != null) { OnCommandExecute.Invoke(command, new EventArgs()); } }
public void Run() { if (m_disabled) { return; } foreach (var subystem in m_subsystems.Keys) { subystem.Periodic(); } foreach (var button in m_buttons) { button(); } m_inRunLoop = true; m_toRemoveFromRunning.Clear(); foreach (var command in m_scheduledCommands.Keys) { if (!command.RunsWhenDisabled && RobotState.IsDisabled) { command.End(true); OnCommandInterrupt?.Invoke(command); foreach (var requirement in command.Requirements) { m_requirements.Remove(requirement); } m_toRemoveFromRunning.Add(command); continue; } command.Execute(); OnCommandExecute?.Invoke(command); if (command.IsFinished) { command.End(false); OnCommandFinish?.Invoke(command); foreach (var requirement in command.Requirements) { m_requirements.Remove(requirement); } m_toRemoveFromRunning.Add(command); } } foreach (var item in m_toRemoveFromRunning) { m_scheduledCommands.Remove(item); } m_inRunLoop = false; foreach (var commandInterruptible in m_toSchedule) { Schedule(commandInterruptible.Value, commandInterruptible.Key); } foreach (var command in m_toCancel) { Cancel(command); } m_toSchedule.Clear(); m_toCancel.Clear(); foreach (var subsystemCommand in m_subsystems) { if (!m_requirements.ContainsKey(subsystemCommand.Key) && subsystemCommand.Value != null) { Schedule(subsystemCommand.Value); } } }