Bonjour,
la méthode lock() et la classe Monitor permettent d'empêcher à plusieurs thread d'accéder au même code en même temps, mais ce que je chercher moi c'est comment forcer un thread à exécuter une portion de code jusqu'à la fin avant de céder la main à un autre.
Par exemple j'ai un thread A qui parcours une liste L d'objet avec un foreach(), si il cède la main à un thread B qui lui retire un élément de la liste L lorsque le thread A va reprendre la main le foreach va planter vu que la collection de la liste L aura changé. Donc ce que je voudrais faire c'est locker le thread A dès qu'il commence le foreach et jusqu'à ce qu'il l'ai finit.
le foreach n'est qu'un exemple, c'est la même histoire par exemple pour du réseau lorsque on écrit dans un stream :
Si le thread cède la main entre le WriteLine() et le Flush(), ça risque de cafouiller.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 streamWriter.WriteLine("Salut"); streamWriter.Flush();
Merci d'avance pour vos réponses,
Slowman.
Partager