Bonjour,
j'essaye de lire une donnée dans un generic.dictionary qui se met a jour en temps réel;Du coup j'ai un problème si la collection se modifie.
Comment faire pour eviter l'exception?
Version imprimable
Bonjour,
j'essaye de lire une donnée dans un generic.dictionary qui se met a jour en temps réel;Du coup j'ai un problème si la collection se modifie.
Comment faire pour eviter l'exception?
Quelle est l'exception ? Peux tu poster la partie du code incriminée ?
quotes est un generic.dictionary (l'hashtable est necessaire ,je ne veux pas de list) qui peut changer pendant l'iteration.Code:
1
2
3
4
5
6
7
8 For Each quote As mnQuote In Quotes.Values Dim flag As Integer If flag = Target Then Currency.Id = quote.MnInstrumentid Exit For End If flag += 1 Next
l'exception est que la collection a changé pendant le parsing...
Tu peux verrouiller la collection pendant le parcours avec l'instruction 'lock'.
Je te laisse consulter la documentation pour de plus amples informations concernant 'lock'.
J'ai deja jeté un coup d'oeil ,et a priori il faut developper son propre mecanisme.....
Pourquoi ne pas créer une nouvelle instance de Dictionary, à partir de l'original, et travailler sur cette nouvelle instance qui ne sera donc pas modifiée par d'autres threads.
Code:
1
2
3
4 ' Dictionnaire source Dim dico As Dictionary<int, int> = New Dictionary<int,int>() ' On crée une copie de notre dictionnaire. Dim newDico As Dictionary<int, int> = New Dictionary<int,int>(dico)