以动态方式启动任务

时间:2013-12-11 18:26:31

标签: c# asynchronous task-parallel-library

我有List<someObject> 以及someObject的{​​{1}}扩展方法。

考虑以下

Process

但我希望多个private void processList(List<someObject> list) { Task.Factory.StartNew(() =>{ foreach(var instance in list) { instance.Process(); }}); } 在同一个列表上工作,以避免锁定我克隆列表并将其分成2个列表,然后启动2个单独的Task来处理,速度有差不多翻了一倍。

我想知道.NET中是否有内置功能可以帮助我以动态方式和更清晰的语法实现这些功能?

1 个答案:

答案 0 :(得分:7)

您可以使用TPL的Parallel.Foreach方法

var list = new List<SomeClass>();
Parallel.ForEach(list, instance =>
{
    instance.Process();
});