每个线程执行一部分啊? 1线程 select * from ( select ROW_NUMBER() over(order by Re_Id) as RowIndex,* from tabel ) as T where T.RowIndex between 1 and 1002线程 select * from ( select ROW_NUMBER() over(order by Re_Id) as RowIndex,* from tabel ) as T where T.RowIndex between 101 and 200以此类推,然后在代码中将各个datatable合并。不知道能不能满足你的要求
多开线程,增加了系统CPU的调度时间,有时,并不一定能够调高效率。
你是不是把所有的数据都一次取出来?你觉得你内存够吗?不知道分页吗?想起我同事的一个故事,他给他小弟看程序问题,他小弟搞一个团购网站,用的是GrideView自带的分页功能,开始速度很快,后来数据量到了几十万的时候,网页直接打不开了。好了,我不需要多说了。
1线程
select * from (
select ROW_NUMBER() over(order by Re_Id) as RowIndex,* from tabel
) as T where T.RowIndex between 1 and 1002线程
select * from (
select ROW_NUMBER() over(order by Re_Id) as RowIndex,* from tabel
) as T where T.RowIndex between 101 and 200以此类推,然后在代码中将各个datatable合并。不知道能不能满足你的要求
Thread[] Threads=new Thread[5];
public void button1_Click(object sender, EventArgs e)
{
for (i=0;i<Threads.Length;i++)
{
Thread[i]=new Thread(() => { Task(arg1, arg2,arg3); });
Thread[i].Name="Thread"+i.ToString();
Thread[i].Start();
}
}public void Task(string A,string B,string C)//一定要是Void返回值
{
MessageBox.Show(A+B+C,"我是"+Thread.CurrentThread.Name);
}
C# code
Thread[] Threads=new Thread[5];
public void button1_Click(object sender, EventArgs e)
{
for (i=0;i<Threads.Length;i++)
{
Threads[i]=new Thread(() => { Task(arg1, arg2,arg3); });
……
把指定任务分配到这些线程
任务少的时候可以挂起多余的线程 or 关闭 or 采用新建的线程方式 ps:最好不要新建
主线程去判断完成程度
主线程设置超时
线程调用回调函数
任务没完成的线程
可以根据任务判断 如任务ID号
如果全部结束了 才合并