示例#1
0
        public IAsyncResult BeginRequest(Message message, TimeSpan timeout, AsyncCallback callback, object state)
        {
            if (message == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message");
            }
            if (timeout < TimeSpan.Zero)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("timeout", timeout, System.ServiceModel.SR.GetString("SFxTimeoutOutOfRange0")));
            }
            base.ThrowIfDisposedOrNotOpen();
            this.AddHeadersTo(message);
            IAsyncRequest request = this.CreateAsyncRequest(message, callback, state);

            this.TrackRequest(request);
            bool flag = true;

            try
            {
                request.BeginSendRequest(message, timeout);
                flag = false;
            }
            finally
            {
                if (flag)
                {
                    this.ReleaseRequest(request);
                }
            }
            return(request);
        }
示例#2
0
        public IAsyncResult BeginRequest(Message message, TimeSpan timeout, AsyncCallback callback, object state)
        {
            if (message == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message");
            }

            if (timeout < TimeSpan.Zero)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
                          new ArgumentOutOfRangeException("timeout", timeout, SR.GetString(SR.SFxTimeoutOutOfRange0)));
            }

            ThrowIfDisposedOrNotOpen();

            AddHeadersTo(message);
            IAsyncRequest asyncRequest = CreateAsyncRequest(message, callback, state);

            TrackRequest(asyncRequest);

            bool throwing = true;

            try
            {
                asyncRequest.BeginSendRequest(message, timeout);
                throwing = false;
            }
            finally
            {
                if (throwing)
                {
                    ReleaseRequest(asyncRequest);
                }
            }

            return(asyncRequest);
        }