【发布时间】:2013-02-07 13:10:18
【问题描述】:
我正在用 C# 开发一个 MVC4 网站。以下代码应在将所有内容传递给视图之前使用项目填充 ConcurrentBag (DisplayModels)。
Parallel.ForEach(model.Products, p =>
{
model.DisplayModels.Add(new DisplayBoardModel()
{
Market = model.Market,
Product = p
});
});
return View(model);
我发现在任何给定的执行中,DisplayModel 似乎都填充到了不同的点。好像 ForEach 在每个后台任务返回之前就完成了。
我对@987654323@ 的理解是它并行处理每个项目,但仍然阻塞调用线程,直到它的所有工作完成。这不正确吗?
在模型准备好之前,我还应该做些什么来阻止动作返回?使用普通的foreach 效果很好
【问题讨论】:
标签: c# multithreading concurrency asp.net-mvc-4 parallel-processing