Exemplo n.º 1
0
        private static void InvokeActions(bool isChildren, int taskID, List <ActionModel> actions, CancellationToken ct, int index = 0)
        {
            if (actions == null || actions.Count == 0)
            {
                return;
            }
            ct.ThrowIfCancellationRequested();
            var actionModel = actions[index];
            var action      = GetAction(actionModel);

            action.OnEventStateChanged += (taskID, actionID, state) =>
            {
                if (ct.IsCancellationRequested)
                {
                    OnActionState?.Invoke(taskID, actionID, Types.ActionInvokeStateType.Done);
                    ct.ThrowIfCancellationRequested();
                }
                if (state == ActionInvokeStateType.Done)
                {
                    OnActionState?.Invoke(taskID, actionID, Types.ActionInvokeStateType.Done);
                    if (index + 1 < actions.Count)
                    {
                        InvokeActions(isChildren, taskID, actions, ct, index + 1);
                    }
                    else if (!isChildren)
                    {
                        //全部运行完成
                        Debug.WriteLine("全部运行完成");
                        OnActionGroupState?.Invoke(taskID, ActionInvokeStateType.Done);
                    }
                }
            };
            OnActionState?.Invoke(taskID, actionModel.ID, Types.ActionInvokeStateType.Runing);
            action.GenerateAction(taskID, actionModel)?.Invoke();
        }
Exemplo n.º 2
0
 private void ActionState(State state)
 {
     if (OnActionState != null)
     {
         OnActionState.Invoke(state);
     }
 }
Exemplo n.º 3
0
 private static void InvokeActions(int taskID, IEnumerable <ActionModel> actions, CancellationToken ct)
 {
     //OnActionsState?.Invoke(taskID, ActionInvokeStateType.Runing);
     ct.ThrowIfCancellationRequested();
     foreach (var action in actions)
     {
         OnActionState?.Invoke(taskID, action.ID, Types.ActionInvokeStateType.Runing);
         GetAction(taskID, action).Invoke();
         if (ct.IsCancellationRequested)
         {
             OnActionState?.Invoke(taskID, action.ID, Types.ActionInvokeStateType.Done);
             ct.ThrowIfCancellationRequested();
         }
         OnActionState?.Invoke(taskID, action.ID, Types.ActionInvokeStateType.Done);
     }
     //OnActionsState?.Invoke(taskID, ActionInvokeStateType.Done);
 }