コード例 #1
0
 /// <summary>
 /// 清理队列
 /// </summary>
 public void Clear()
 {
     Logger.Info("队列已清空");
     RootTasks.Clear();
     CallbackJson    = "";
     TaskHandlerType = null;
 }
コード例 #2
0
        /// <summary>
        /// 创建任务
        /// </summary>
        /// <typeparam name="TTask">任务类型</typeparam>
        /// <param name="doMethod">任务执行方法</param>
        /// <param name="undoMethod">任务回滚方法</param>
        /// <returns></returns>
        private ITaskBuilder Apply <TTask>(Expression <Action <TTask> > doMethod, Expression <Action <TTask> > undoMethod)
            where TTask : ITask
        {
            Logger.Info($"Begin Apply RootTasks Count:{RootTasks.Count}");

            RootTasks.Add(new TaskHierarchy
            {
                IdentityBuilder = () =>
                {
                    //延迟执行
                    //所有任务设定参数完毕才执行第一个任务
                    //MysoftTaskHierarchy.SetTaskChain方法中设定

                    var doId = TaskContext.Schedule(doMethod, TimeSpan.FromDays(1000));

                    //撤销任务入队
                    //延迟执行
                    var undoId = TaskContext.Schedule(undoMethod, TimeSpan.FromDays(1000));

                    return(new TaskIdentity
                    {
                        DoId = doId,
                        UndoId = undoId
                    });
                },
                Mode = TaskRunningModeEnum.Parallel,
                Name = GetTaskName <TTask>()
            });

            Logger.Info($"After Apply RootTasks Count:{RootTasks.Count}");

            return(this);
        }