Bonjour

Je cherche a écouter un port UDP sur lequel je dois recevoir une trame périodiquement.
Là je le fais en remplissant une list<String> ainsi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        private  void UDPListener(int portEcoute)
        {
            Task.Run(async () =>
            {
                IPEndPoint myIPendPoint = new IPEndPoint(IPAddress.Any, portEcoute);
 
                using (var udpClient = new UdpClient(myIPendPoint))
                {
                    string loggingEvent = "";
 
                    while (true)
                    {
                        var receivedResults = await udpClient.ReceiveAsync();
 
                        loggingEvent += Encoding.ASCII.GetString(receivedResults.Buffer);
 
                        mylist.Add(loggingEvent);
 
                        loggingEvent = "";
                    }
                }
            });
        }
le but étant de pouvoir afficher ce que j'ai reçu sur le thread de la form
avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
            textBox1.Clear();
 
            foreach (var item in mylist)
            {
                textBox1.AppendText(item + " \r\n");
            }
que j'ai pour le moment mis sur un timer (ça clignote, c'est moche mais c'est pour apprendre...)

tout ceci fonction jusqu'à un beau plantage System.InvalidOperationException
La collection a été modifiée ; l'opération d'énumération peut ne pas s'exécuter

forcément j'ai un thread qui rempli la list<string> et un autre qui cherche à faire une énumération.

En c avec les OS temps réels je connais les mutex pour gérer ça mais là je n'arrive pas à trouver le nom de ce que j'ai besoin de mettre en place pour éviter le conflit.

Merci par avance pour votre aide