internal StateMachineSubscription Dequeue()
        {
            StateMachineSubscription subscription = this.EventQueue[0];

            this.EventQueue.RemoveAt(0);
            return(subscription);
        }
        internal void Enqueue(ActivityExecutionContext context, IComparable queueName)
        {
            StateMachineSubscription item = this.GetSubscription(queueName);

            if (item != null)
            {
                this.EventQueue.Add(item);
            }
            this.ProcessQueue(context);
        }
        internal void Enqueue(ActivityExecutionContext context, Guid subscriptionId)
        {
            StateMachineSubscription item = this.GetSubscription(subscriptionId);

            if (item != null)
            {
                this.EventQueue.Add(item);
            }
            this.ProcessQueue(context);
        }
コード例 #4
0
        internal void Enqueue(ActivityExecutionContext context, IComparable queueName)
        {
            StateMachineSubscription subscription = GetSubscription(queueName);

            if (subscription != null)
            {
                // subscription can be null if we already unsubscribed to
                // this event
                this.EventQueue.Add(subscription);
            }
            ProcessQueue(context);
        }
コード例 #5
0
        internal void ProcessQueue(ActivityExecutionContext context)
        {
            StateActivity currentState = StateMachineHelpers.GetCurrentState(context);

            if (this.EventQueue.Count == 0 ||
                this.ExecutionState.HasEnqueuedActions ||
                this.ExecutionState.SchedulerBusy ||
                currentState == null)
            {
                return;
            }

            StateMachineSubscription subscription = Dequeue();

            subscription.ProcessEvent(context);
        }