关于WebRequest的一个问题
一下2段代码的差别仅仅在一个调用了ReadToEnd()方式。
- C# code
static void Main(string[] args) { while (true) { WebResponse webResponse = WebRequest.Create("******").GetResponse(); if (webResponse != null) { StreamReader streamReader = new StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312")); streamReader.ReadToEnd(); } Console.WriteLine(times++ + " " + Thread.CurrentThread.ManagedThreadId); } Console.ReadLine(); }
- C# code
static void Main(string[] args) { while (true) { WebResponse webResponse = WebRequest.Create("******").GetResponse(); if (webResponse != null) { StreamReader streamReader = new StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312")); //streamReader.ReadToEnd(); } Console.WriteLine(times++ + " " + Thread.CurrentThread.ManagedThreadId); } Console.ReadLine(); }
但是结果完全不同。调用了ReadToEnd方法的程序不停的在请求指定网站,但是不调用ReadToEnd方法的程序请求2次就卡在.GetResponse()处了。请高手来解答。
[解决办法]
webResponse试试close或者dispose