c# - 以动态方式启动任务

标签 c# asynchronous task-parallel-library

我有一个 List<someObject> 和扩展方法 someObject称为 Process .

考虑以下问题

private void processList(List<someObject> list)
{
  Task.Factory.StartNew(() =>{
    foreach(var instance in list)
    {
        instance.Process();
    }});
}

但我想要多个 Task s 在同一个列表上工作,为了避免锁定我克隆了列表并将其分成 2 个列表,然后开始 2 个单独的 Task s来处理,速度几乎翻了一番。

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

最佳答案

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

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

关于c# - 以动态方式启动任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20527090/

相关文章:

c# - DataContext 在哪里?

c# - 使用关键字作为变量名

Spring Data Repository 异步保存

c# - 如何将 task.Wait(CancellationToken) 转换为 await 语句?

c# - 推荐使用 Task.WhenAll 循环执行任务的方法

c# - 在C#中保存文本文件

C# 代码片段不会自动导入命名空间

c# - 异步与多线程

c# - 如何将此 lambda 表达式转换为异步/等待?

c# - TPL 并行度启发式