如何立即中止HttpWebRequest.GetResponseAsync()

时间:2014-01-25 21:58:23

标签: c# asynchronous httpwebrequest abort

当我在调用GetResponseAsync()之后立即调用请求的.Abort()方法时,请求仍然不会立即中止。在中止实际发生之前有很长的(2-3秒)延迟。

看来,HttpWebRequest首先解析主机名并建立连接。因此,如果主机名错误,或者DNS服务器已经死亡,或者主机本身没有响应,.Abort()将需要很长时间才能关闭连接并中止请求。

有没有办法立即中止操作并关闭连接而无需等待这些操作(主机名查找,主机连接设置等)完成?

1 个答案:

答案 0 :(得分:1)

DNS解析同步发生,中止在完成(或失败)之前不会生效。你可以做的事情不多,除了在一个单独的线程中执行请求,并在你需要中止时“忘记”它。