protected virtual void PerformAtomicOperation(IAtomicOperation operation, CancellationToken cancellationToken) { if (operation != null) { try { IOperation successor = operation.Operator.Execute((IExecutionContext)operation, cancellationToken); if (successor != null) { OperatorTrace.RegisterParenthood(operation, successor); ExecutionStack.Add(successor); } CurrentOperation = null; } catch (Exception ex) { if (ex is OperationCanceledException) { throw ex; } else { throw new OperatorExecutionException(operation.Operator, ex); } } } }
public void Prepare(IOperation initialOperation) { base.Prepare(); ExecutionStack.Clear(); if (initialOperation != null) ExecutionStack.Add(initialOperation); CurrentOperation = null; OperatorTrace.Reset(); OnPrepared(); }