using System.Collections.Generic; namespace Amib.Threading.Internal { internal class SynchronizedDictionary { private readonly Dictionary _dictionary; private readonly object _lock; public SynchronizedDictionary() { _lock = new object(); _dictionary = new Dictionary(); } public int Count { get { return _dictionary.Count; } } public bool Contains(TKey key) { lock (_lock) { return _dictionary.ContainsKey(key); } } public void Remove(TKey key) { lock (_lock) { _dictionary.Remove(key); } } public object SyncRoot { get { return _lock; } } public TValue this[TKey key] { get { lock (_lock) { return _dictionary[key]; } } set { lock (_lock) { _dictionary[key] = value; } } } public Dictionary.KeyCollection Keys { get { lock (_lock) { return _dictionary.Keys; } } } public Dictionary.ValueCollection Values { get { lock (_lock) { return _dictionary.Values; } } } public void Clear() { lock (_lock) { _dictionary.Clear(); } } } }