【发布时间】:2016-06-08 07:25:25
【问题描述】:
我的记录在这里。
IQueryable<EmployeeItem> dtEmployee = GetAll();
在dtEmployee 的那个循环之后。
这是我的正常循环,工作正常。
for (int i = 0; i < dtEmployee.Count(); i++)
{
var drEmployee = dtEmployee.AsEnumerable().ElementAt(i);
}
这是我想尝试的并行循环。
System.Threading.Tasks.Parallel.For(0, dtEmployee.Count(), i => {
var drEmployee = dtEmployee.AsEnumerable().ElementAt(i);
});
我没有任何编译错误,但是当我在我的 Visual Studio 中运行它时,我得到了这个错误:
【问题讨论】:
-
我没有看到使用提供的链接的任何图像。顺便说一句,您并行运行此程序的动机是什么?它不会加速任何事情..而且您多次调用 AsEnumerable() 方式。只需使用 .ToList() 实现 IQueryable
-
你能检查一下哪个变量是空的吗?
-
尝试将变量名 'var drEmployee' 更改为其他名称
-
GetAll()是做什么的?是数据库查询吗?你为什么用for而不是foreach? -
嗨@PeterBons,使用并行的原因是为了加快我原来的 for 循环。它确实加快了很多。上次,原始循环花了 2 个小时。更改为Parallel后,大约需要10分钟。是不是因为 IQueryable 不是线程安全的?
标签: linq iqueryable parallel.for