Пример #1
0
        public override void Start(StepRoutineInfo stepRoutine)
        {
            /* To achieve the effect we want a delegate that checks whether toCheck equals toWaitFor
             * and if it does proceed the StepRoutine using ProceedStepRoutine.
             * Then we want to subscribe that delegate to the eventToCheckOn so it will be called when
             * the event is raised.
             */

            // Create the checking and proceeding delegate.
            checker = delegate
            {
                if (toCheck is null && toWaitFor is null)                 // Both are null? Proceed.
                {
                    StepRoutine.ProceedStepRoutine(stepRoutine);
                    return;
                }

                if (toCheck is null || toWaitFor is null)                 // Only one is null? Not there yet.
                {
                    return;
                }

                if (toCheck.Equals(eventToCheckOn))
                {
                    StepRoutine.ProceedStepRoutine(stepRoutine);
                }
            };

            // Subscribe the checking and proceeding delegate to the event so that it is called when
            // it is raised.
            eventToCheckOn.Subscribe(checker);
        }
Пример #2
0
        public ScriptBlob(ScriptingLanguage scriptingLanguage, string code, ScriptEventBase executeOn = null)
        {
            language = scriptingLanguage;

            this.code = code;

            executeOn?.Subscribe((ScriptEventHandler)RunCode);

            this.executeOn = executeOn;
        }
        public override void Start(StepRoutineInfo stepRoutine)
        {
            /* To achieve the effect we want, we should create a delegate that calls ProceedStepRoutine.
             * We subscribe that delegate to the event.
             * When the event is raised ProceedStepRoutine will be called, then Cleanup will be called
             * from there and the StepRoutine will proceed.
             */

            // Create the proceeder delegate.
            proceeder = delegate { StepRoutine.ProceedStepRoutine(stepRoutine); };

            // Subscribe the delegate to the event so it will be called when the event is raised.
            eventToWaitFor.Subscribe(proceeder);
        }