public void EndCancel(IAsyncResult result) { lock (_renderLock) { if (_cancelResult != null) { if (_cancelResult != result) { throw new SplicerException(Resources.ErrorAsyncResultNotIssuesByThisInstance); } if (_cancelResult.Consumed) { throw new SplicerException(Resources.ErrorEndCancelAlreadyCalledForAsyncResult); } _cancelResult.AsyncWaitHandle.WaitOne(); _cancelResult.Consume(); if (_cancelResult.Exception != null) { throw new SplicerException(Resources.ErrorExceptionOccuredDuringCancelRenderRequest, _cancelResult.Exception); } _cancelResult = null; } else { throw new SplicerException(Resources.ErrorMustCallBeginCancelBeforeEndCancel); } } }
public void EndCancel(IAsyncResult result) { lock (_renderLock) { if (_cancelResult != null) { if (_cancelResult != result) { throw new SplicerException("The supplied async result was not issued by this instance"); } if (_cancelResult.Consumed) { throw new SplicerException("EndCancel has already been called fo this async result"); } _cancelResult.AsyncWaitHandle.WaitOne(); _cancelResult.Consume(); if (_cancelResult.Exception != null) { throw new SplicerException( "Exception occured while attempting to cancel render request, see inner exception for details", _cancelResult.Exception); } _cancelResult = null; } else { throw new SplicerException("You must call BeginCancel before EndCancel"); } } }