我試圖從網頁上下載html,但是我想在10秒後放棄。下面的代碼很好地下載了文本,但它可能需要超過10秒。我有超時設置,但StreamReading需要很長時間。在關閉連接的情況下10秒後停止進一步處理的最佳方式是什麼?用超時下載文件
如果req.GetResponse()需要的時間超過10秒,我得到一個WebException,但是wr.GetResponseStream()讀取是花費時間。我也想確保所有連接都正確關閉。
代碼:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Timeout = 10000;
req.ReadWriteTimeout = 10000;
using (WebResponse wr = req.GetResponse())
{
Console.WriteLine("A: " + DateTime.Now.ToString(" HH:mm:ss:fff"));
using (StreamReader sr = new StreamReader(wr.GetResponseStream(), true))
{
Console.WriteLine("B: " + DateTime.Now.ToString(" HH:mm:ss:fff"));
var b = sr.ReadToEnd();
Console.WriteLine("C: " + DateTime.Now.ToString(" HH:mm:ss:fff"));
}
}
樣本輸出:
A: 20:04:36:522
B: 20:04:36:522
C: 20:04:54:337
Elapsed Time: ~18 Seconds
請不要使用前綴與您的標題「C#:」和這樣的。這就是標籤的用途。 –