线程偷懒?多线程下载的时候为什么有线程偷懒,只有两个线程在工作,如图我开启了5个线程,却只有0和3在工作。代码如下:代码
 问题2,如果我把下载方法改成下面这样,线程都不工作了,似乎是死锁?这段代码的第7行是添加下载范围,如果没这段似乎就不出现此问题了,难道是ms的基础类锁定有问题吗  1 
 2         static int ran = 0;
 3         static void down()
 4         {           
 5             string url = "http://dl_dir.qq.com/qqfile/qq/QQ2010/QQ2010Beta2.exe";
 6             HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
 7             req.AddRange(1,500000);
 8             Stream stream = req.GetResponse().GetResponseStream();
 9             byte[] buffer = new byte[256];
10             int i = stream.Read(buffer, 0, 256);
11             while (i > 0)
12             {
13                 i = stream.Read(buffer, 0, 256);
14             }           
15         }
   错误如图(把项目暂停时查看变量值才知道线程都已经停了,可它们还没工作呢)请高手帮忙解决下啊

解决方案 »

  1.   

    不小心按错键了就发帖了,问题在博客园问题地址 http://space.cnblogs.com/question/13133/。大侠们帮忙看看啊
      

  2.   


    我的chrome不支持csdn的html编辑器,所以就在博客园提问了。实在不好意思
      

  3.   

    如果我把“req.AddRange(1,500000);”去掉就没问题了,这是怎么坏事呢? 而且有时候试就没问题了,已经困扰好几天了,今天拿它除了让高手们帮我解决下
      

  4.   

    默认的线程数最大允许2设置req.ServicePoint.ConnectionLimit = 线程数
      

  5.   


    非常感谢,博客园的朋友也帮我解决了
    遇到此类问题的朋友如果需要更详细的内容参考
    http://www.cnblogs.com/lishenglyx/archive/2010/01/07/1641190.html