我有幾項任務可以並行進行。由於列表不是線程安全的,我正在使用concurrentbag
。一旦完成所有任務,我想將concurrentbag
轉換爲列表。如何將concurrentbag轉換爲列表?
我有searched in MSDN,但找不到任何可以將concurrentbag轉換爲c#列表的API。我該怎麼做?
注:我必須轉換爲列表,這是必要的。
我有其他選項來應用列表上的鎖,但我想用於構建線程安全的concurrentbag
。
我有幾項任務可以並行進行。由於列表不是線程安全的,我正在使用concurrentbag
。一旦完成所有任務,我想將concurrentbag
轉換爲列表。如何將concurrentbag轉換爲列表?
我有searched in MSDN,但找不到任何可以將concurrentbag轉換爲c#列表的API。我該怎麼做?
注:我必須轉換爲列表,這是必要的。
我有其他選項來應用列表上的鎖,但我想用於構建線程安全的concurrentbag
。
ConcurrentBag具有ToList()方法。
您可以使用ToList
擴展方法。
var list = concurrentBag.ToList();
ConcurrentBag
有.ToList()
擴展方法 - 它實現IEnumerable<T>
var someList = someConcurrentBag.ToList();
如果內部項目隨後非列表中使用
VAR someList = someConcurrentBag.ToList();
或者您可以嘗試如下如果cbag中的每個項目已經是一個列表。
E.g.在我的情況ConcurrentBag <名單< INT>>
ConcurrentBag<List<string>> jobErrorsColl = new ConcurrentBag<List<string>>();
// Got something in jobErrorsColl
List<string> multipleJobErrors = new List<string>();
List<string> singleJobErrors = new List<string>();
while (jobErrorsColl.IsEmpty)
{
jobErrorsColl.TryPeek(out singleJobErrors);
multipleJobErrors.AddRange(singleJobErrors);
}
return multipleJobErrors;
MSDN鏈接是here爲同一
有多難讀[MSDN](https://msdn.microsoft.com/en-us/ library/dd381779(v = vs.110).aspx)?它實現IEnumerable <>',使用linq'ToList()'獲取列表。 – Sinatr
@Sinatr在[SO文檔測試版](http://stackoverflow.com/documentation);-)上的示例時間爲 –
您是否使用system.linq添加到您的類中?你必須能夠使用.tolist() –