Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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());
            }
        }
Exemplo n.º 4
0
        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);
                }
            }
        }