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(); }
private void ActionState(State state) { if (OnActionState != null) { OnActionState.Invoke(state); } }
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); }