using System; using System.Collections.Generic; namespace FastJSON { public sealed class SafeDictionary { private readonly object _Padlock = new object(); private readonly Dictionary _Dictionary; public SafeDictionary(int capacity) { _Dictionary = new Dictionary(capacity); } public SafeDictionary() { _Dictionary = new Dictionary(); } public bool TryGetValue(TKey key, out TValue value) { lock (_Padlock) return _Dictionary.TryGetValue(key, out value); } public int Count { get { lock (_Padlock) return _Dictionary.Count; } } public TValue this[TKey key] { get { lock (_Padlock) return _Dictionary[key]; } set { lock (_Padlock) _Dictionary[key] = value; } } public void Add(TKey key, TValue value) { lock (_Padlock) { if (_Dictionary.ContainsKey(key) == false) _Dictionary.Add(key, value); } } } }