并行foreach,根据行优先级在数据表中执行线程

本文关键字:数据表 执行 线程 优先级 foreach 并行 | 更新日期: 2023-09-27 18:15:55

我想在datatable中执行线程,通过使用Parallel foreach

过滤基于优先级的行
Priority        Name
2                A
1                B
2                C
3                D
1                E

线程应该按照以下顺序执行(从优先级1到2,3…

只有优先级1的线程完成,优先级2的线程才应该启动)

EBACD

并行foreach,根据行优先级在数据表中执行线程

我不知道你为什么不想使用Parallel.ForEach

听起来你可以用一些PLINQ:

var result = dataTable
                .AsEnumerable()
                .Select(r => new { Priority = (int)r["Priority"], Name = (string)r["Name"] })
                .AsParallel()
                .OrderBy(r => r.Priority)
                .Select(r => r.Name)
                .ToList();
但是您可能不会看到太多的性能改进,除非您正在处理数百万行数据。