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(); } } }
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)); }