Beispiel #1
0
        /// <summary>
        /// Execute method for 'command' action
        /// </summary>
        static public ThreadExecutionState Execute <T>(String executionId, int repeat, int delay, Action <String, String, T> action, String target, String command, T args = default(T))
        {
            if (!CanEnqueue(executionId))
            {
                return(GetExecutionState(executionId));
            }

            ThreadExecution <T> x = new ThreadExecution <T>(executionId, action, target, command, args);

            x.Repeat = repeat;
            x.Delay  = delay;
            Enqueue(x);
            return(GetExecutionState(executionId));
        }
Beispiel #2
0
        /// <summary>
        /// Execute method for 'no arguments' action
        /// </summary>
        static public ThreadExecutionState Execute(String executionId, int repeat, int delay, Action action)
        {
            if (!CanEnqueue(executionId))
            {
                return(null);
            }

            ThreadExecution x = new ThreadExecution <Object>(executionId, action);

            x.Repeat = repeat;
            x.Delay  = delay;
            Enqueue(x);

            return(GetExecutionState(executionId));
        }
Beispiel #3
0
        /// <summary>
        /// Execute method for 'state' action
        /// </summary>
        static public ThreadExecutionState Execute <T>(String executionId, int repeat, int delay, Action <T, ThreadExecutionState> action, T args = default(T))
        {
            if (!CanEnqueue(executionId))
            {
                return(null);
            }

            ThreadExecution x = new ThreadExecution <T>(executionId, action, args);

            x.Repeat = repeat;
            x.Delay  = delay;
            Enqueue(x);

            return(GetExecutionState(executionId));
        }
Beispiel #4
0
        static void Enqueue(ThreadExecution x)
        {
            if (!ExecutionQueues.ContainsKey(x.ID))
            {
                ExecutionQueues[x.ID] = new ThreadExecutionQueue(x.ID);
            }

            bool start = ExecutionQueues[x.ID].Count == 0;

            ExecutionQueues[x.ID].Enqueue(x);
            if (start)
            {
                ExecutionQueues[x.ID].Start();
            }
        }
Beispiel #5
0
        /// <summary>
        /// Execute method for special case 'simple' action
        /// </summary>
        static public ThreadExecutionState Execute(String executionId, int repeat, int delay, Action <ThreadExecutionState> action)
        {
            if (!CanEnqueue(executionId))
            {
                return(null);
            }

            var x = new ThreadExecution <ThreadExecutionState>(executionId, action);

            x.Repeat = repeat;
            x.Delay  = delay;
            Enqueue(x);
            ThreadExecutionState xs = GetExecutionState(executionId);

            x.Arguments = xs;
            return(xs);
        }