示例#1
0
        private void AddTaskToTaskGroup(TaskGroup taskGroup, ITask task, TaskExecutionMode taskExecutionMode)
        {
            CheckThatTaskWasNotExecutedAlready(task);
            if (taskGroup == null)
            {
                taskGroup = new TaskGroup()
                {
                    GroupId = Guid.NewGuid().ToString(),
                };

                taskGroup.Tasks.Add((task, taskExecutionMode));
                TasksGroups.Add(taskGroup);
            }
            else
            {
                var existingGroup = TasksGroups.FirstOrDefault(x => x.GroupId == taskGroup.GroupId);
                if (existingGroup == null)
                {
                    taskGroup.Tasks.Add((task, taskExecutionMode));
                    TasksGroups.Add(taskGroup);
                }
                else
                {
                    taskGroup.Tasks.Add((task, taskExecutionMode));
                }
            }
        }
示例#2
0
        public ITargetInternal AddTask(TaskGroup taskGroup, params ITask[] tasks)
        {
            foreach (var task in tasks)
            {
                AddTaskToTaskGroup(taskGroup, task, TaskExecutionMode.Synchronous);
            }

            return(this);
        }
示例#3
0
        public ITargetInternal AddTaskAsync(TaskGroup taskGroup, params ITask[] tasks)
        {
            foreach (var task in tasks)
            {
                AddTaskToTaskGroup(taskGroup, task, TaskExecutionMode.Parallel);
            }

            return(this);
        }
示例#4
0
        public ITargetInternal Do <T, T2>(Action <ITaskContextInternal, T, T2> targetAction, T param, T2 param2, Action <DoTask3 <T, T2> > taskAction = null, TaskGroup taskGroup = null)
        {
            var task = new DoTask3 <T, T2>(targetAction, param, param2);

            taskAction?.Invoke(task);
            AddTaskToTaskGroup(taskGroup, task, TaskExecutionMode.Synchronous);
            return(this);
        }
示例#5
0
        public ITargetInternal Do <T1, T2, T3, T4, T5>(Action <ITaskContextInternal, T1, T2, T3, T4, T5> targetAction, T1 param, T2 param2, T3 param3, T4 param4, T5 param5, Action <DoTask6 <T1, T2, T3, T4, T5> > taskAction = null, TaskGroup taskGroup = null)
        {
            var task = new DoTask6 <T1, T2, T3, T4, T5>(targetAction, param, param2, param3, param4, param5);

            taskAction?.Invoke(task);
            AddTaskToTaskGroup(taskGroup, task, TaskExecutionMode.Synchronous);
            return(this);
        }
示例#6
0
        public ITargetInternal Do(Action <ITaskContextInternal> targetAction, Action <DoTask> taskAction = null, TaskGroup taskGroup = null)
        {
            var task = new DoTask(targetAction);

            taskAction?.Invoke(task);
            AddTaskToTaskGroup(taskGroup, task, TaskExecutionMode.Synchronous);
            return(this);
        }
示例#7
0
        public ITargetInternal DoAsync <T1, T2, T3, T4>(Func <ITaskContextInternal, T1, T2, T3, T4, Task> targetAction, T1 param, T2 param2, T3 param3, T4 param4, Action <DoTaskAsync5 <T1, T2, T3, T4> > taskAction = null, TaskGroup taskGroup = null)
        {
            var task = new DoTaskAsync5 <T1, T2, T3, T4>(targetAction, param, param2, param3, param4);

            taskAction?.Invoke(task);
            AddTaskToTaskGroup(taskGroup, task, TaskExecutionMode.Parallel);
            return(this);
        }
示例#8
0
        public ITargetInternal DoAsync <T, T2>(Func <ITaskContextInternal, T, T2, Task> targetAction, T param, T2 param2, Action <DoTaskAsync3 <T, T2> > taskAction = null, TaskGroup taskGroup = null)
        {
            var task = new DoTaskAsync3 <T, T2>(targetAction, param, param2);

            taskAction?.Invoke(task);
            AddTaskToTaskGroup(taskGroup, task, TaskExecutionMode.Parallel);
            return(this);
        }
示例#9
0
        public ITargetInternal DoAsync(Func <ITaskContextInternal, Task> targetAction, Action <DoTaskAsync> taskAction = null, TaskGroup taskGroup = null)
        {
            var task = new DoTaskAsync(targetAction);

            taskAction?.Invoke(task);
            AddTaskToTaskGroup(taskGroup, task, TaskExecutionMode.Parallel);
            return(this);
        }
示例#10
0
        public ITargetInternal DoAsync <T>(Action <ITaskContextInternal, T> targetAction, T param, Action <DoTask2 <T> > taskAction = null, TaskGroup taskGroup = null)
        {
            var task = new DoTask2 <T>(targetAction, param);

            taskAction?.Invoke(task);
            AddTaskToTaskGroup(taskGroup, task, TaskExecutionMode.Parallel);
            return(this);
        }