Члены являются поточно-ориентированными, но не следует ожидать, что последовательность вызовов будет поточно-ориентированной. Например, вы не можете ожидать, что следующее будет поточно-ориентированным:
if (!dictionary.ContainsKey(key))
{
// Another thread may have beaten you to it
dictionary.Add(key, value);
}
Вместо этого используйте новый потокобезопасный API - например,
AddOrUpdate
(последний выигрывает в случае состояния гонки) или GetOrAdd
(первый выигрывает в случае условия гонки).