using语句中的Parallel.ForEach挂起

时间:2013-11-11 17:37:55

标签: c# .net task-parallel-library

此代码有什么问题。它挂起:

public static IEnumerable<Piece> allPiecesList;
private static ConcurrentDictionary<string, Piece> allPiecesCD = new ConcurrentDictionary<string, Piece>();

using (var dc = new MyDataContext())
{
     allPiecesList = dc.PopulateAllPieces("A").ToList();
     Parallel.ForEach(allPiecesList , (piece) => allPiecesCD.TryAdd(piece.Name, piece)); 
}

注意:PopulateAllPieces使用Linq to SQL。但是,这一切都已完成,并且在Parallel部分启动之前我们有一个IEnumerable。

MyDataContext是一个linq to sql数据上下文。 Piece.Name是一个不进行任何计算的访问器属性。基本上,PopulateAllPieces从数据库返回一组记录。这些记录中的每一个都是“片段”对象。 Piece.Name公开数据库中名为“Name”的列。

0 个答案:

没有答案