示例#1
0
 public OperationRetryManagerResult(OperationRetryManagerResultCode resultCode, Exception ex)
 {
     if (ex == null && resultCode != OperationRetryManagerResultCode.Success)
     {
         throw new ArgumentNullException("ex", "ex can't be null if resultCode != ResultCode.Success");
     }
     this.resultCode = resultCode;
     this.exception  = ex;
 }
        protected override OperationRetryManagerResult InternalTryRun(Action operation)
        {
            OperationRetryManagerResult result = OperationRetryManagerResult.Success;
            Action operationToRun = operation;

            CommonUtils.ProcessKnownExceptionsWithoutTracing(delegate
            {
                this.Run(operationToRun);
            }, delegate(Exception exception)
            {
                this.logger.Log(MigrationEventType.Verbose, exception, "Error running operation {0}.", new object[]
                {
                    operation.Method.Name
                });
                OperationRetryManagerResultCode resultCode = CommonUtils.IsTransientException(exception) ? OperationRetryManagerResultCode.RetryableError : OperationRetryManagerResultCode.PermanentError;
                result = new OperationRetryManagerResult(resultCode, exception);
                return(true);
            });
            return(result);
        }