我正在用C#开发一个MVC4网站.ConcurrentBag在将所有内容传递给视图之前,以下代码应该使用项填充(DisplayModels).
Parallel.ForEach(model.Products, p =>
{
model.DisplayModels.Add(new DisplayBoardModel()
{
Market = model.Market,
Product = p
});
});
return View(model);
Run Code Online (Sandbox Code Playgroud)
我发现在任何给定的执行中,DisplayModels似乎被填充到不同的点.好像ForEach在每个后台任务返回之前完成.
我Parallel.ForEach对它的理解是,它并行处理每个项目,但仍然阻止了调用线程,直到完成所有工作.这不正确吗?
在模型准备好之前,我还应该做些什么来阻止动作返回吗?使用正常foreach工作正常
c# parallel-processing concurrency multithreading asp.net-mvc-4