Threadsafe generic sortedlist

Description

problemes d'acces a la sortedlist (C#2.0) lorsqu'un autre thread ajoute un item dans celle ci...
en effet, le GetEnumerator() a changé...
et pire ! quand 2 threads ajoutent la meme clef en meme temps, on arrive meme a avoir des clefs dupliquées !!!
une solution simple aurait été de Locker la liste dans tous les cas...
mais en .net chaqu'un devra attendre son tour pour pouvoir acceder en lecture a la sortedlist
l'acces en lecture doit rester multiThread
mais des que l'on veut modifier la sortedlist, l'acces en lecture et ecriture sur les autres threads est bloqué
voici le code que j'ai produit.
il marche mais je me demande comment l'ameliorer parce qu'il ne me conviens toujours pas ...
donc n'esitez pas sur les commentaires !!!

Source / Exemple :


SyncSortedList<TKey, TValue>
    {
        TValue this[TKey Key] { get; set; }
        void Add(TKey Key, TValue Value);
        bool Remove(TKey Key);
        void Clear();
        int Count { get; }

        bool ContainsKey(TKey Key);
        bool ContainsValue(TValue Value);

        System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey, TValue>> GetEnumerator();
        System.Collections.Generic.IEnumerable<TKey> Keys { get; }
        System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey, TValue>> Reverse { get; }
        System.Collections.Generic.IEnumerable<TValue> Values { get; }
    }

Conclusion :


on peut maintenant utiliser la classe SyncSortedList presque comme une SortedList normale !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.