2010-10-20 5 views
1

Je le code suivant:Cette clé est déjà associée à un élément de cette collection

If Not Application("ServicesQueueActiveDict").Exists(nID) Then 
'we are good to process, this item is not Active....add it now 
Application("ServicesQueueActiveDict").Add nID, Now 
Else 
     'do whatever 

Le «ServicesQueueActiveDict est un caprock.dictionary

Je reçois l'erreur référencée dans ce sujet, » Cette clé est déjà associée à un élément de cette collection. »Lorsque la branche If est exécutée Le problème est que, si le nID existe, pourquoi le code essaie-t-il de le ré-ajouter, ne devrait-il pas alors exécuter la branche Else?

Au fait,

nID est un entier simple, d'ailleurs

Répondre

1

Y a-t-il un risque de problèmes de threading? Votre code ne montre aucun verrouillage, donc un autre thread pourrait-il passer entre l'exécution du test .Exists et la tentative d'ajout?

+0

Je vais y jeter un coup d'œil. Je ne suis pas sûr, pour le moment. En fait, comment le saurais-je exactement? – crackedcornjimmy

+0

S'il s'agit d'un problème de threading, il peut être difficile de le retrouver. J'utilise généralement une forme de journalisation, généralement en utilisant le framework log4net car il gère très bien les messages provenant de plusieurs threads. –

Questions connexes