예제 #1
0
        private object Execute(Actions.Action action, object data)
        {
            object ret = null;

            if (action.Skip)
            {
                return(null);
            }
            CurrentAction = action;
            var count = action.GetItemCount(this, data);
            var sea   = new StepEventArgs(action, count);

            for (int i = 0; i < count; i++)
            {
                sea.Index = i;
                Manager.UIThreadCall(() => StepChanged?.Invoke(this, sea));
                if (State == ContextState.Stop)
                {
                    return(null);
                }
                else if (State == ContextState.Pause)
                {
                    _continueEvent.WaitOne();
                }
                ret = action.Execute(this, i, data);
                if (ret is BreakValue)
                {
                    return(ret);
                }
                if (action is Actions.ParentAction pa && !(action is Actions.Window))
                {
                    ExecuteChildren(pa, ret);
                }
            }
            return(ret);
        }
 public override void Execute(Sis owner)
 {
     action.Execute();
 }
예제 #3
0
 public override void Execute(StateMachine state)
 {
     action.Execute();
 }