/// <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)); }
/// <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)); }
/// <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)); }
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(); } }
/// <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); }