日期:2014-05-18  浏览次数:20750 次

关于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