【发布时间】:2016-12-15 21:29:52
【问题描述】:
我必须在批处理作业中处理大量数据
程序流程
var inputDataLst = contextObj.GetData(); //More that 10000 rows I will retrieve
foreach(var item in inpDataLst)
{
//logic
}
Call context.SaveMethod(inpuDataLst);
我正在尝试做类似的事情
var tsklst = inputDataLst.Select(async pItem =>
{
//Logic
});
await Task.WhenAll(taskList);
编译器发出警告,Resharper 建议我创建一个同步方法。
任何人都可以建议我如何处理这个问题,因为我将拥有大量数据,我想做一个异步操作..
实施@bruno 建议
Parallel.ForEach(taskList, item => {
item.StatusId = 2; //Completed
LastUpdateUser = "Batch";
});
循环完成后,我得到 taskList 为 NULL,
【问题讨论】:
-
您真正追求的是异步还是并行?你在逻辑上做什么?如果它不使用共享状态,你可以只使用 Linq 的 IEnumerable
.AsParallel() 方法,或者你可以使用 Parallel.For -
我不想一一处理那条记录..
-
你能显示编译器正在显示的警告吗?
-
是的,我很确定他的意思是并行...
-
@oqx 代码上的全绿线..也许 resharper 正在发出警告..
标签: c# .net async-await parallel.foreach