本帖最后由 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)
|