Wie kann ein threadsicheres Wörterbuch am besten implementiert werden?

Ich konnte ein threadsicheres Wörterbuch in C # implementieren, indem ich von IDictionary abgeleitet und ein privates SyncRoot-Objekt definiert habe:

public class SafeDictionary<TKey, TValue>: IDictionary<TKey, TValue>
{
    private readonly object syncRoot = new object();
    private Dictionary<TKey, TValue> d = new Dictionary<TKey, TValue>();

    public object SyncRoot
    {
        get { return syncRoot; }
    } 

    public void Add(TKey key, TValue value)
    {
        lock (syncRoot)
        {
            d.Add(key, value);
        }
    }

    // more IDictionary members...
}

Anschließend sperre ich dieses SyncRoot-Objekt für alle meine Konsumenten (mehrere Threads):

Beispiel:

lock (m_MySharedDictionary.SyncRoot)
{
    m_MySharedDictionary.Add(...);
}

Ich konnte es zum Laufen bringen, aber dies führte zu etwas hässlichem Code. Meine Frage ist, gibt es eine bessere, elegantere Möglichkeit, ein threadsicheres Wörterbuch zu implementieren?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage