ConcurrentDictionary и ConcurrentBag для AddOrUpdate параллельно ⇐ C#
-
Anonymous
ConcurrentDictionary и ConcurrentBag для AddOrUpdate параллельно
Правильно ли использовать ConcurrentDictionary и ConcurrentBag для значений AddOrUpdate.
В основном пытался сделать следующее:
[*]
имею файл с миллионами записей и пытаюсь обработать и извлечь его в объект.
[*]
И запись такая: пара ключ-значение, Ключ=WBAN и значение как объект.
var cd = new ConcurrentDictionary(); число интервалов = 0; foreach (строка var в File.ReadLines(path).AsParallel().WithDegreeOfParallelism(5)) { var sInfo = line.Split(new char[] { ',' }); cd.AddOrUpdate(sInfo[0], новый ConcurrentBag(){новые данные() { WBAN = sInfo[0], Дата = string.IsNullOrEmpty(sInfo[1])? "" : sInfo[1], время = string.IsNullOrEmpty(sInfo[2]) ? "" : sInfo[2] } } , (oldKey, oldValue) => { oldValue.Add(новые данные() { WBAN = sInfo[0], Дата = string.IsNullOrEmpty(sInfo[1])? "" : sInfo[1], время = string.IsNullOrEmpty(sInfo[2]) ? "" : sInfo[2] }); вернуть старое значение; } ); }
Правильно ли использовать ConcurrentDictionary и ConcurrentBag для значений AddOrUpdate.
В основном пытался сделать следующее:
[*]
имею файл с миллионами записей и пытаюсь обработать и извлечь его в объект.
[*]
И запись такая: пара ключ-значение, Ключ=WBAN и значение как объект.
var cd = new ConcurrentDictionary(); число интервалов = 0; foreach (строка var в File.ReadLines(path).AsParallel().WithDegreeOfParallelism(5)) { var sInfo = line.Split(new char[] { ',' }); cd.AddOrUpdate(sInfo[0], новый ConcurrentBag(){новые данные() { WBAN = sInfo[0], Дата = string.IsNullOrEmpty(sInfo[1])? "" : sInfo[1], время = string.IsNullOrEmpty(sInfo[2]) ? "" : sInfo[2] } } , (oldKey, oldValue) => { oldValue.Add(новые данные() { WBAN = sInfo[0], Дата = string.IsNullOrEmpty(sInfo[1])? "" : sInfo[1], время = string.IsNullOrEmpty(sInfo[2]) ? "" : sInfo[2] }); вернуть старое значение; } ); }
Мобильная версия