在遞迴時,有用到foreach
之前也習慣使用
結果看了幾篇文
平行運算 (一):Parallel.For、Parallel.Foreach 用法及技巧
平行運算 (二):PLINQ 的應用
用.NET展現多核威力(3) – 佛心TPL之Parallel.For好威
發現原來一直看到的AsParallel是多重執行緒的方式
二話不說
先把最近在玩的小程式套用一下
原本的程式:
private TreeNode getUp(MaxiEntities db, int p, TreeNode t)
{
var innerlist = db.tType.Where(s => s.cUpId == p);
if (innerlist.Count() > 0)
{
foreach (var i in innerlist)
{
t.Nodes.Add(getUp(db, i.cId, new TreeNode(i.cNameEn + " | " + i.cNameCn + " | " + i.cValue + " | " + i.cSort + " | " + (i.cEnable ? "啟用" : "停用")) { Tag = i.cId }));
}
}
return t;
}
修改後:
private TreeNode getUp(MaxiEntities db, int p, TreeNode t)
{
db.tType.AsParallel().Where(s=>s.cUpId == p).ForAll(i =>
{
t.Nodes.Add(getUp(db, i.cId, new TreeNode(i.cNameEn + " | " + i.cNameCn + " | " + i.cValue + " | " + i.cSort + " | " + (i.cEnable ? "啟用" : "停用")) { Tag = i.cId }));
});
return t;
}
老實說
真的少程式碼又少了一截
開心~~