c# 多线程序下载网页的疑问
我现在数据库里面有一千多个网页地址,这些地址,我会定时提取,现在单线程是可以,但是效率比较低,所以我想写成多线成的形式,但是网上找了一些资料,都说得不太清楚,希望高人指点。部分代码:
private void button1_Click(object sender, System.EventArgs e)
{
int n=10;
downloadThread =new Thread[n];//为线程申请资源,确定线程总数
for(int i=1; i<n; i++)//开启指定数量的线程数
{
downloadThread[i] = new Thread(new ThreadStart(_GetProLrInfoWeek));//指定线程起始设置
downloadThread[i].Name = i.ToString();
downloadThread[i].Start();//逐个开启线程
}
}
private void _GetProLrInfoWeek ()
{
shiyixia(System.Threading.Thread.CurrentThread.Name.ToString());
}
private void shiyixia(string tt)
{
string sql="select top 1000 b_id,b_web,b_start from web_lr_date where b_flag=0 and b_start=0";
DataTable myt=wjlogic.GetSqlTable(sql);
if(myt!=null && myt.Rows.Count>0)
{
for(int i=0;i<myt.Rows.Count;i++)
{
string bid=myt.Rows[i][0].ToString().Trim();
string bweb=myt.Rows[i][1].ToString().Trim();
string tstart=myt.Rows[i][2].ToString().Trim();
UpDateThreadFlag(bid,tt); //更新线程状态
label1.Text=bid;
string content=GetHtmlCode(bweb);
}
}
}
但是这样明显行不通,请问一下像这样的多线程怎么处理?望指教~谢谢 --------------------编程问答-------------------- 你应该是要在for(int i=0;i <myt.Rows.Count;i++) 这个循环里面开线程 --------------------编程问答--------------------
这个具体怎么做啊,刚开始接触这个多线程问题,主要就是通过这10个线程来完成1000条记录的处理?每一个线程怎么来分配任务~ --------------------编程问答-------------------- 为什么我的多线程好像只能提高20%左右的效率?是不是什么地方写错了? --------------------编程问答-------------------- 去网上找找爬虫程序。。或者易做图程序应该对你有帮助。。 --------------------编程问答-------------------- 新建一个线程类,每个线程里添加一个ArrayList,
用来存放主程序分配的网址。
把一千个网址先取出来放在ArrayList里,
然后启动10个线程,每个线程分配100个网址,
线程内部,处理完一个接着处理下一个。
--------------------编程问答-------------------- 顶一个哈哈 --------------------编程问答-------------------- 线程结合队列 Queue --------------------编程问答-------------------- 关注一下~! --------------------编程问答-------------------- 有可能是在更新线程状态时没有锁定更新的资源:
lock(Lable1)
{
label1.Text=bid;
}
补充:.NET技术 , C#