2010-05-03 4 views
0

J'ai des threads 1.N qui écrivent dans un .CompurrentDictionary .net 4.0. J'ai un autre thread qui se déclenche toutes les 5 secondes (paramétrable dans app.config) pour énumérer le dictionnaire, et potentiellement supprimer certains éléments. Je veux arrêter les opérations d'écriture pendant l'énumération.Mises à jour de ConcurrentDictionary et synchronisation de threads d'énumération

Quelle serait la meilleure primitive pour synchroniser ces deux opérations. Toute aide serait appréciée.

Bob.

Répondre

2

utilisez ReaderWriterLockSlim (http://msdn.microsoft.com/library/system.threading.readerwriterlockslim(VS.90).aspx) afin que l'énumération de threads demande des threads de verrouillage et d'écriture exclusifs non exclusifs.

+0

Cela ne fonctionne malheureusement pas. –

+0

pourquoi? veuillez expliquer – Andrey

+0

Cela ne semble pas empêcher les mises à jour de la collection. Il semble que le contrôle de retour du thread d'énumération signifie que le thread d'énumération ne sépare pas le dictionnaire complet. Les verrous sont libérés pendant l'énumération. –