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();
}
}