小编Vaz*_*aze的帖子

什么时候C#Parallel.ForEach的工作完成了?

我正在用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

2
推荐指数
1
解决办法
595
查看次数