public override ActivityExecutionStatus HandleFault(Activity activity, ActivityExecutionContext executionContext, Exception exception) { if (activity.HasPrimaryClosed) { Activity faultHandlers = GetFaultHandlers(executionContext.Activity); if (((faultHandlers != null) && (faultHandlers.ExecutionStatus != ActivityExecutionStatus.Closed)) && (faultHandlers.ExecutionStatus != ActivityExecutionStatus.Initialized)) { if (faultHandlers.ExecutionStatus == ActivityExecutionStatus.Executing) { executionContext.CancelActivity(faultHandlers); } return(ActivityExecutionStatus.Faulting); } faultHandlers = GetCancellationHandler(executionContext.Activity); if (((faultHandlers != null) && (faultHandlers.ExecutionStatus != ActivityExecutionStatus.Closed)) && (faultHandlers.ExecutionStatus != ActivityExecutionStatus.Initialized)) { if (faultHandlers.ExecutionStatus == ActivityExecutionStatus.Executing) { executionContext.CancelActivity(faultHandlers); } return(ActivityExecutionStatus.Faulting); } if ((bool)activity.GetValue(FaultProcessedProperty)) { this.SafeReleaseLockOnStatusChange(executionContext); } } return(base.HandleFault(activity, executionContext, exception)); }
public static ActivityExecutionStatus Cancel(CompositeActivity activity, ActivityExecutionContext executionContext) { for (int i = (activity.EnabledActivities.Count - 1); i >= 0; i--) { Activity childActivity = activity.EnabledActivities[i]; if (childActivity.ExecutionStatus == ActivityExecutionStatus.Executing) { executionContext.CancelActivity(childActivity); return(activity.ExecutionStatus); } if (childActivity.ExecutionStatus == ActivityExecutionStatus.Canceling || childActivity.ExecutionStatus == ActivityExecutionStatus.Faulting) { return(activity.ExecutionStatus); } if (childActivity.ExecutionStatus == ActivityExecutionStatus.Closed) { activity.RemoveProperty(ActiveChildQualifiedNameProperty); return(ActivityExecutionStatus.Closed); } } return(ActivityExecutionStatus.Closed); }
public override ActivityExecutionStatus HandleFault(Activity activity, ActivityExecutionContext executionContext, Exception exception) { if (activity.HasPrimaryClosed != true) { return(base.HandleFault(activity, executionContext, exception)); } //We are handed fault again. Quiten Fault & Cancellation Handlers if any running. Activity handlersActivity = FaultAndCancellationHandlingFilter.GetFaultHandlers(executionContext.Activity); if (handlersActivity != null && (handlersActivity.ExecutionStatus != ActivityExecutionStatus.Closed && handlersActivity.ExecutionStatus != ActivityExecutionStatus.Initialized)) { if (handlersActivity.ExecutionStatus == ActivityExecutionStatus.Executing) { executionContext.CancelActivity(handlersActivity); } return(ActivityExecutionStatus.Faulting); } else { handlersActivity = FaultAndCancellationHandlingFilter.GetCancellationHandler(executionContext.Activity); if (handlersActivity != null && (handlersActivity.ExecutionStatus != ActivityExecutionStatus.Closed && handlersActivity.ExecutionStatus != ActivityExecutionStatus.Initialized)) { if (handlersActivity.ExecutionStatus == ActivityExecutionStatus.Executing) { executionContext.CancelActivity(handlersActivity); } return(ActivityExecutionStatus.Faulting); } } if ((bool)activity.GetValue(FaultAndCancellationHandlingFilter.FaultProcessedProperty)) { SafeReleaseLockOnStatusChange(executionContext); } return(base.HandleFault(activity, executionContext, exception)); }
protected internal override ActivityExecutionStatus Cancel(ActivityExecutionContext executionContext) { if (executionContext == null) { throw new ArgumentNullException("executionContext"); } for (int i = 0; i < base.EnabledActivities.Count; i++) { Activity activity = base.EnabledActivities[i]; if (activity.ExecutionStatus == ActivityExecutionStatus.Executing) { executionContext.CancelActivity(activity); } if ((activity.ExecutionStatus == ActivityExecutionStatus.Canceling) || (activity.ExecutionStatus == ActivityExecutionStatus.Faulting)) { return(base.ExecutionStatus); } } return(ActivityExecutionStatus.Closed); }
protected internal override ActivityExecutionStatus Cancel(ActivityExecutionContext executionContext) { if (executionContext == null) { throw new ArgumentNullException("executionContext"); } for (int i = 0; i < this.EnabledActivities.Count; ++i) { Activity childActivity = this.EnabledActivities[i]; if (childActivity.ExecutionStatus == ActivityExecutionStatus.Executing) { executionContext.CancelActivity(childActivity); } if (childActivity.ExecutionStatus == ActivityExecutionStatus.Canceling || childActivity.ExecutionStatus == ActivityExecutionStatus.Faulting) { return(this.ExecutionStatus); } } return(ActivityExecutionStatus.Closed); }