C# 同时运行两个并行的.foreach()
我有一个后台工作程序,它为列表项调用并行线程C# 同时运行两个并行的.foreach(),c#,.net,multithreading,backgroundworker,task-parallel-library,C#,.net,Multithreading,Backgroundworker,Task Parallel Library,我有一个后台工作程序,它为列表项调用并行线程 doWork() { Parallel.foreach(list1, a=> { while(true) { //do some operations } }); Parallel.foreach(list2, b=> { while(true) { //do so
doWork()
{
Parallel.foreach(list1, a=>
{
while(true)
{
//do some operations
}
});
Parallel.foreach(list2, b=>
{
while(true)
{
//do some operations
}
});
}
如果我想同时运行这两个列表,我应该创建另一个线程作为它们的父线程还是其他方式??我将分别获取这两个列表,因此组合它们不是一个选项。我在这两个列表中运行无限循环。为两个“foreach”循环创建两个单独的线程。您可以使用任务在单独的线程上运行这两个循环。使用普通的
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);
创建两个任务,然后
Task.WaitAll
Action Action=(object obj)=>{//将parallel.foreach放在这里}和第二个并行的另一个操作。foreach
然后运行任务并调用Task.WaitAll
rt??如果可以使用TPL,显式创建线程通常不是一个好主意。