Запрос linq к ориентированным на многопотоковое исполнение Значениям ConcurrentDictionary?

скажем, у меня есть следующий код:

ConcurrentDictionary myDict= new ConcurrentDictionary();

Обычно каждый доступ по ключу ориентирован на многопотоковое исполнение, но является также следующим ориентированным на многопотоковое исполнение запросом linq? Я ничего не нашел в документах: http://msdn.microsoft.com/en-us/library/dd287226.aspx

if myDict.Values.Any(x => !x.HasPaid))
{
  return false
}

43
задан Chris 9 July 2010 в 21:19
поделиться

1 ответ

Исправление ... Я не уверен, когда вы обращаетесь к свойству Values. Он является потокобезопасным при использовании LINQ для самого объекта.


LINQ будет использовать метод GetEnumerator для итерации элементов.

Прямо из MSDN

Перечислитель, возвращаемый из словаря, можно безопасно использовать одновременно с чтением и записью в словарь, однако он не представляет собой моментальный снимок словаря. Содержимое, отображаемое через перечислитель, может содержать изменения, внесенные в словарь после вызова GetEnumerator

if myDict.Any(x => !x.Value.HasPaid))
{
  return false
}
40
ответ дан 26 November 2019 в 22:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: