日期:2014-05-17  浏览次数:20897 次

(急)C#开多个线程完成同一任务
批量查询信息,怎么开多个线程来提高效率?

------解决方案--------------------
第一、把你的数据在逻辑上拆分成N份。

第二、利用线程同时读取他们。

第三、都读取后,合并之。。。。。。。
------解决方案--------------------
每个线程执行一部分啊?
1线程
select * from (
select ROW_NUMBER() over(order by Re_Id) as RowIndex,* from tabel
) as T where T.RowIndex between 1 and 100

2线程
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);
}


------解决方案--------------------
开5-10个线程
把指定任务分配到这些线程
任务少的时候可以挂起多余的线程 or 关闭 or 采用新建的线程方式 ps:最好不要新建
主线程去判断完成程度
主线程设置超时
线程调用回调函数
任务没完成的线程
可以根据任务判断 如任务ID号