| 本帖最后由 marcofly 于 2014-4-8 20:58 编辑 
 需求:想写个多线程访问网页的小工具。
 比如:定义同时开辟的线程数量为10。要访问的网页数量为500条。
 当前的思路:
 使用for循环开辟10个线程:
 
 [C#] 纯文本查看 复制代码  for(int threadNum = 0;threadNum < 10;threadNum++)
            {
                Thread td = new Thread(new ParameterizedThreadStart(tdStart));
                td.IsBackground = true;
                td.Start(string.Empty);
            }在tdStart委托函数中,通过一个while循环,每次从一个list中读取要访问的url,然后访问网页即可
 代码:
 
 但是在运行的时候会报错,而且是按照顺序执行的(并没有体现多线程访问的随机性)[C#] 纯文本查看 复制代码 private void tdStart(object obj)
        {
            while (curNums < listUrls.Count)
            {
                string url = string.Empty;
                lock(listUrls){
                    url = listUrls[curNums];
                    curNums++;
                }
                HttpHelper http = new HttpHelper();
                HttpItem item = GetHttpItem(url);
                HttpResult result = http.GetHtml(item);
                ListViewItem lvi = lvUrls.Items[curNums];
                lvi.SubItems[2].Text = "+完成"+curNums.ToString();
            }
        }C#多线程方面接触不多,希望大家帮忙解惑下,thanks
 
 完整的代码附件【包含测试网址】:
  多线程访问网页.rar
(50.35 KB, 下载次数: 57) |