线程偷懒?多线程下载的时候为什么有线程偷懒,只有两个线程在工作,如图我开启了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 }
错误如图(把项目暂停时查看变量值才知道线程都已经停了,可它们还没工作呢)请高手帮忙解决下啊
问题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 }
错误如图(把项目暂停时查看变量值才知道线程都已经停了,可它们还没工作呢)请高手帮忙解决下啊
我的chrome不支持csdn的html编辑器,所以就在博客园提问了。实在不好意思
非常感谢,博客园的朋友也帮我解决了
遇到此类问题的朋友如果需要更详细的内容参考
http://www.cnblogs.com/lishenglyx/archive/2010/01/07/1641190.html