2

我目前正在实施一项需要大量执行时间的任务。所以,我选择了线程。但是我的线程中有一个 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 中,我通过传递数据行中单元格的值来运行一些方法。

4

1 回答 1

11

假设您的线程不相关,最简单的方法可能是使用Parallel.Foreach

如果它们相关的并且您需要指定wait的行为,您应该考虑使用任务并行库

编辑:如果您想从循环中并行调用方法,您可以使用Parallel.Invoke但在父行集合上执行它似乎更容易(除非您的行很少或行依赖于彼此的操作)

于 2013-05-16T18:09:10.480 回答