Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        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");
                }
            }
        }