Esempio n. 1
0
        /// <summary>
        /// Asynchronously downloads an image from the specified url
        /// </summary>
        /// <param name="url"></param>
        /// <param name="callback">A <see cref="DownloadImageCompletedCallback"/> to be invoked when the request is completed</param>
        /// <param name="userState">A state object to be returned to the callback</param>
        /// <returns></returns>
        public object DownloadImageAsync(string url, DownloadImageCompletedCallback callback, object userState)
        {
            string urlValidationError;

            if (!IsValidURL(url, out urlValidationError))
            {
                throw new ArgumentException(urlValidationError);
            }
            ImageRequestAsyncState state   = new ImageRequestAsyncState(callback, DownloadImageAsyncCompleted, userState);
            HttpWebServiceRequest  request = GetRequest();

            request.GetResponseAsync(url, new MemoryStream(), IMAGE_ACCEPT, null, state);
            return(request);
        }
Esempio n. 2
0
        /// <summary>
        /// Callback method for asynchronous requests
        /// </summary>
        private void DownloadImageAsyncCompleted(WebRequestAsyncState state)
        {
            ImageRequestAsyncState requestState = (ImageRequestAsyncState)state;
            Image imageResult = null;

            try
            {
                if (!requestState.Request.Cancelled && requestState.Error == null)
                {
                    imageResult = GetImage(requestState.Request);
                }
            }
            catch (HttpWebServiceException ex)
            {
                requestState.Error = ex;
                if (requestState.Request.ResponseStream != null)
                {
                    requestState.Request.ResponseStream.Close();
                }
            }
            requestState.DownloadImageCompleted(new DownloadImageAsyncResult(imageResult, requestState.Error), requestState.UserState);
        }