首页 新闻 搜索 专区 学院

如何批量挂起或结束线程

0
悬赏园豆:5 [已解决问题] 解决于 2016-07-11 23:53

我现在有30万条数据需要处理并写入数据库,方法是用多线程,批量开启线程的代码如下:

Thread[] threads = new Thread[x];//批量开启x个线程
for (int i = 0; i < x; i++)
{
threads[i] = new Thread(new ParameterizedThreadStart(Getxqy));
threads[i].Name = (i + 1).ToString();
threads[i].IsBackground = true;
threads[i].Start(chaiArr[i]);
}

Getxqy是主体方法,chaiArr[i]是需要处理的数据集合,关键是用多线程处理也需要很长的时间,我该如何挂起或者结束正在运行的所有线程?求指教!!!

Xamalin的主页 Xamalin | 初学一级 | 园豆:187
提问于:2016-06-12 22:33
< >
分享
最佳答案
2

如果刚好你的线程主体里面是类似下面的代码:

While(true)

{

  ...

}

可以用 ManualResetEvent

While(true)

{

  ...

  event.WaitOne();

  ...

}

要停止的话就event.Reset();

收获园豆:5
keitsi | 菜鸟二级 |园豆:246 | 2016-06-13 09:31
其他回答(3)
0

弄清楚线程模型就行了.真写代码的时候都直接用并行运算/task来实现的不会真的去用Thread对象的

吴瑞祥 | 园豆:28856 (高人七级) | 2016-06-13 09:20
0

给几个关键字:

Parallel.Foreach

CountdownEvent

CancellationToken

ThreadPool

Daniel Cai | 园豆:10374 (专家六级) | 2016-06-13 10:20
0

线程并不是开的越多越好,用task

秋壶冰月 | 园豆:5669 (大侠五级) | 2016-06-14 12:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册