2011-07-16 30 views
0

有时在爬网时,我得到非常慢的响应。在缓慢响应中杀死HttpWebRequest

这是不慢的连接,因此超时不工作。它的主机速度达到3-4 Bytes /秒。

有没有一种方法,如果需要超过10秒,如超时,来杀死这个要求吗?

+0

也许最好的方法是在一段时间后使用异步请求,然后使用Abourt()。 http://stackoverflow.com/questions/5520122/canceling-async-httpwebrequests – anon

回答

2

你想要做的是在自己的线程启动抓取过程,超时在指定时间后。查看HttpWebRequest类的BeginGetResponse(),该类启动一个线程并在完成时调用指定的函数。您可以为此方法添加超时机制,如下面的示例部分所示:http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse(v=VS.71).aspx

对不起,我没有派上用场,以显示如何做到这一点的任何代码,但该网页上的例子出现完整。

0

如果你的HttpWebRequest是在一个线程中,你可以通过调用Abort在线程本身来杀死请求......我知道这也许是“过度杀伤”......也许别人有更好的主意......