任務並行庫 (TPL) 基於“任務”的概念,可代表異步操作。 在某些方面,任務類似於線程或 ThreadPool 工作項,但是抽象級別更高。 術語“任務並行”是指一個或多個獨立的任務同時運行。 任務提供兩個主要好處:
系統資源的使用效率更高,可伸縮性更好。
在後台,任務排隊到 ThreadPool,其已使用算法進行增強,這些算法能夠確定並調整到可提供最大化吞吐量負載平衡的線程數。 這會使任務相對輕量,您可以創建很多任務以啟用細化並行。
對於線程或工作項,可以使用更多的編程控件。
任務和圍繞它們生成的框架提供了一組豐富的 API,這些 API 支持等待、取消、繼續、可靠的異常處理、詳細狀態、自定義計劃等功能
//並行執行方法 ALL_Products是一個方法 System.Threading.Tasks.Parallel.Invoke(() => ALL_Products(iWine)); //////好評排行(重新賦值)並行循環 /// /// 產品好評 ///private List Copey_Pro2(List OladData) { List utlist = new List (); if (OladData == null) { return utlist; } System.Threading.Tasks.Parallel.ForEach(OladData,item => { //foreach (ChartProScoreDto item in OladData) // { ChartProScoreDto NewPro = new ChartProScoreDto(); EnYuan.DEV.Mongo.EntityHelper.CopyProperties(item, ref NewPro); var place = Get_TastPlace(item.PlaceId); var pro = GetProduct(item.ProId); if (place != null) { NewPro.PlaceId = place.Name;//體驗點名稱 } if (pro != null) { NewPro.ProId = pro.Name;//產品名稱 } lock (utlist) { utlist.Add(NewPro); } // } }); //排序 return utlist.OrderByDescending(c => c.Score).ToList(); }
更多介紹到:http://msdn.microsoft.com/zh-cn/library/dd537609(v=vs.110).aspx