webrequest.begingetresponse занимает слишком много времени, когда URL недействителен

Я использую веб-запрос для получения данных изображения. URL может быть когда-нибудь захвачен. В случае неверного URL begingetresponse занимает время, равное периоду ожидания. Кроме того, контроль перестает отвечать на запросы в течение этого периода. Другими словами, асинхронный обратный вызов не работает асинхронно. Это ожидаемое поведение?

try
                                {
                                    // Async requests 
                                    WebRequest request = WebRequest.Create(uri);
                                    request.Timeout = RequestTimeOut;
                                    RequestObject requestObject = new RequestObject();
                                    requestObject.Request = request;
                                    request.BeginGetResponse(this.ProcessImage, requestObject);
                                }
                                catch (Exception)
                                {
                                    ShowErrorMessage(uri);
                                }

 private void ProcessImage(IAsyncResult asyncResult)
        {            
            try
            {
                RequestObject requestObject = (RequestObject)asyncResult.AsyncState;
                WebRequest request = requestObject.Request;
                WebResponse response = request.EndGetResponse(asyncResult);

                Bitmap tile = new Bitmap(response.GetResponseStream());
                // do something
            }
            catch (Exception)
            {
                ShowErrorMessage();
            }
        }

Ответы на вопрос(2)

Ваш ответ на вопрос