【发布时间】:2013-05-17 03:15:56
【问题描述】:
我目前正在执行一项需要大量执行时间的任务。所以,我选择了线程。但是我的线程中有一个 foreach 循环,我想在其中创建多个线程。 我担心这是不是合适的方法。
我的代码类似如下:
Thread th= new Thread(new ThreadStart(ThreadProcedure));
th.IsBackground = true;
th.Start();
public void ThreadProcedure()
{
//I have datatable here
foreach(DataRow in mytable.rows)
{
//here I want to create a multiple threads, say like
//Thread1 on which I want to run method1
Method1(dr["Column1"].ToString());
//Thread2 on which I want to run method2
Method2(dr["Column2"].ToString());
//Thread3 on which I want to run method3
Method3(dr["Column3"].ToString());
}
}
在我的 foreach 中,我通过在数据行中传递单元格的值来运行一些方法。
【问题讨论】:
-
你有什么问题
-
您通常希望在循环之外创建线程,然后让每个线程完成部分工作。正如 Matthew 所建议的,Parallel.ForEach 就是为此而设计的。
-
@DanielA.White 我正在尝试实现 parallel.foreach,它的执行速度比 foreach 快得多,但无法在我的数据表的数据行上实现它。
标签: c# multithreading