private void WebResponseCallback(IAsyncResult asyncResult)
        {
            WebReadState asyncState = (WebReadState)asyncResult.AsyncState;

            try
            {
                asyncState.readStream = asyncState.webRequest.EndGetResponse(asyncResult).GetResponseStream();
                asyncState.buffer     = new byte[0x186a0];
                asyncState.readStream.BeginRead(asyncState.buffer, 0, asyncState.buffer.Length, new AsyncCallback(this.WebReadCallback), asyncState);
            }
            catch (WebException exception)
            {
                base.Dispatcher.Invoke(DispatcherPriority.Render, new WebRequestErrorDelegate(this.WebRequestError), exception);
            }
        }
 private void GetGifStreamFromHttp(Uri uri)
 {
     try
     {
         WebReadState state = new WebReadState
         {
             memoryStream = new MemoryStream(),
             webRequest   = WebRequest.Create(uri)
         };
         state.webRequest.Timeout = 0x2710;
         state.webRequest.BeginGetResponse(new AsyncCallback(this.WebResponseCallback), state);
     }
     catch (SecurityException)
     {
         this.CreateNonGifAnimationImage(true);
     }
 }
        private void WebReadCallback(IAsyncResult asyncResult)
        {
            WebReadState asyncState = (WebReadState)asyncResult.AsyncState;
            int          count      = asyncState.readStream.EndRead(asyncResult);

            if (count > 0)
            {
                asyncState.memoryStream.Write(asyncState.buffer, 0, count);
                try
                {
                    asyncState.readStream.BeginRead(asyncState.buffer, 0, asyncState.buffer.Length, new AsyncCallback(this.WebReadCallback), asyncState);
                }
                catch (WebException exception)
                {
                    base.Dispatcher.Invoke(DispatcherPriority.Render, new WebRequestErrorDelegate(this.WebRequestError), exception);
                }
            }
            else
            {
                base.Dispatcher.Invoke(DispatcherPriority.Render, new WebRequestFinishedDelegate(this.WebRequestFinished), asyncState.memoryStream);
            }
        }