Exemplo n.º 1
0
        void IActivityEventListener <EventArgs> .OnEvent(object sender, EventArgs e)
        {
            ActivityExecutionContext context = (ActivityExecutionContext)sender;

            // only if activity is still executing, then run it
            if (context.Activity.ExecutionStatus == ActivityExecutionStatus.Executing)
            {
                ActivityExecutionStatus newStatus = TransactedContextFilter.ExecuteActivity(context.Activity, context, true);
                if (newStatus == ActivityExecutionStatus.Closed)
                {
                    context.CloseActivity();
                }
            }
        }
Exemplo n.º 2
0
        public override ActivityExecutionStatus Execute(Activity activity, ActivityExecutionContext executionContext)
        {
            if (executionContext == null)
            {
                throw new ArgumentNullException("executionContext");
            }
            if (activity == null)
            {
                throw new ArgumentNullException("activity");
            }
            if (!activity.SupportsTransaction)
            {
                throw new ArgumentException("activity");
            }

            // subscribe to the main activity
            activity.RegisterForStatusChange(Activity.LockCountOnStatusChangeChangedEvent, this);
            activity.HoldLockOnStatusChange(this);
            return(TransactedContextFilter.ExecuteActivity(activity, executionContext, false));
        }