私はC#でMVC4Webサイトを開発しています。次のコードは、ConcurrentBag
すべてをビューに渡す前に、(DisplayModels)にアイテムを入力する必要があります。
Parallel.ForEach(model.Products, p =>
{
model.DisplayModels.Add(new DisplayBoardModel()
{
Market = model.Market,
Product = p
});
});
return View(model);
特定の実行で、DisplayModelsが別のポイントに入力されているように見えることがわかりました。各バックグラウンドタスクが戻る前にForEachが完了しているかのように。
私の理解では、Parallel.ForEach
各アイテムを並行して処理しましたが、すべての作業が完了するまで呼び出しスレッドをブロックしていました。これは正しくありませんか?
モデルの準備が整う前にアクションが戻るのを止めるために他にやるべきことはありますか?通常の使用は正常に機能しforeach
ました