4

我有一個後臺工作,其調用並行線程列表項運行2個parallel.foreach()一起

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

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

如果我想一起並行運行這兩個名單,我應該創建另一個線程作爲它們的父或者其他方式?我分別得到這兩個列表,所以結合他們不是一個選項。而且我在他們兩個內運行無限循環。

+5

創建兩個任務,然後'Task.WaitAll' –

+0

'行動作用=(對象物obj)=> { //這裏把parallel.foreach };'和用於第二另一動作' parallel.foreach'然後運行任務並調用Task.WaitAll rt – varun257

+0

varun,是..... –

回答

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); 
0

爲兩個'foreach'循環創建兩個獨立的線程。

+0

也許你可以舉一個代碼示例? –

+1

如果你可以使用TPL,顯式創建線程通常不是一個好主意。 – svick

相關問題