Bonjour,

Je dois travailler sur un ArrayList qui peut être lu et/ou mis à jour ds plusieurs thread. La documentation Microsoft propose plusieurs solutions.
Une première est de récupérer un "wrapper" avec ArrayList.Synchronized

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
ArrayList myWrapper = ArrayList.Synchronized(myList)
foreach((Object item in myWrapper){
 
}
et une autre de faire un lock(myList.SyncRoot) suivi d'un foreach.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
ArrayList myCollection = new ArrayList();
  lock(myCollection.SyncRoot) {
  foreach (Object item in myCollection) {
  // Insert your code here.
  }
 }
J'ai ecrit le 1er exemple, est-il thread-safe? Si oui en quoi diffère-t-il du second (tiré de la doc Microsoft)

Le traitement pour chaque élément de la Collection est assez long, cela va-t-il ralentir de maniere significative le reste du programme?