我正在使用webrequest获取一些图像数据。该网址可能会在某个时间被盗用。在URL无效的情况下,begingetresponse所花时间等于超时期限。在此期间控制也变得没有反应。换句话说,异步回调不是异步工作的。这是预期的行为?webrequest.begingetresponse在URL无效时花费太多时间
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();
}
}
不,预期的行为将会是如果您使用BeginGetResponse UI保持响应。您可以向我们展示您调用BeginGetResponse的代码片段吗? – bernhof 2009-08-05 09:51:11
在发送之前,您有任何方法可以验证该网址吗?我认为你所要求的服务器对你来说是一个黑匣子,无法访问该代码? – Sebastian 2009-08-05 12:27:14