一起运行两个parallel.foreach()

时间:2012-11-13 08:00:39

标签: c# .net multithreading backgroundworker task-parallel-library

我有一个后台工作程序,它为列表项调用并行线程

 doWork()
    {
    Parallel.foreach(list1, a=>
    {
       while(true)
       {
             //do some operations
       }
    });

    Parallel.foreach(list2, b=>
    {
        while(true)
        {
            //do some operations
        } 
    });
    }

如果我想并行地同时运行这两个列表,我应该创建另一个线程作为其父级还是其他方式?我分别得到两个列表,所以组合它们不是一个选项。我在它们内部运行无限循环。

2 个答案:

答案 0 :(得分:4)

您可以使用任务在不同的线程上运行两个循环。使用普通的foreach循环。

var t1 = Task.Factory.StartNew(() => 
{
    foreach(var a in list1)
    {
        //do some operations
    }
});

var t2 = Task.Factory.StartNew(() => 
{
    foreach(var a in list1)
    {
        //do some operations
    }
});

// This will block the thread until both tasks have completed
Task.WaitAll(t1, t2);

答案 1 :(得分:0)

为两个'foreach'循环创建两个单独的线程。