Transfert données entre une Thread et un Form

walteau Messages postés 23 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 13 janvier 2007 - 13 janv. 2007 à 14:20
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 21 janv. 2007 à 22:06
Bonjour à tous, je suis en train de développer dans le cadre d'experimentation une application qui envoi un message Udp vers le port 11000 de mon pc. Une Thread est lancée afin de receptionner les divers messages udp reçu.
Voici le code de ma FormPrincipale :
<hr size="2" width="100%" />   public Thread sampleUdpThread;
        public Form1()
        {
            InitializeComponent();
//Lance l'ecoute Udp
           sampleUdpThread = new Thread(new ThreadStart(StartListener));
           sampleUdpThread.IsBackground = true;
            sampleUdpThread.Start();
            Console.WriteLine("Started SampleTcpUdpServer's UDP Receiver Thread!\n");
        }

        private void button1_Click(object sender, EventArgs e)
        {
//Envoi le message
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
           ProtocolType.Udp);

            IPAddress broadcast = IPAddress.Parse("5.110.124.52");

            byte[] sendbuf = Encoding.ASCII.GetBytes(textBox1.Text);
            IPEndPoint ep = new IPEndPoint(broadcast, 11000);

            s.SendTo(sendbuf, ep);
        }
        private void StartListener()
        {
            bool done = false;
            int listenPort = 11000;
            UdpClient listener = new UdpClient(listenPort);
            IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);

            try
            {
                while (!done)
                {
                    byte[] bytes = listener.Receive(ref groupEP);
                   
                    //Lance un Thread gérant le message reçu
                    Gestion_message _gestionmessage = new Gestion_message(groupEP, bytes);
                   
                    Thread gèreUdpMessagesThread = new Thread(new ThreadStart(_gestionmessage.udp));
                    gèreUdpMessagesThread.IsBackground = true;
                    gèreUdpMessagesThread.Start();     
                }

            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally
            {
                listener.Close();
            }
        }
<hr size="2" width="100%" />Et la classe geremessageudp :
 class Gestion_message
    {
        IPEndPoint groupEP;
        byte[] bytes;
        public Gestion_message(IPEndPoint _groupEP, byte[] _bytes)
        {
            bytes = _bytes;
            groupEP = _groupEP;
        }
        public delegate void addMessageDelegate(string message);
        public void Ajout_textbox2(string message)
        {
            //Je souhaiterai pouvoir mettre ici a jour la valeur du TextBox2.Text qui est dans la form 1
        }
        public void udp()
        {
            MessageBox.Show("Received broadcast from " + groupEP.ToString() + " :\n" +
                Encoding.ASCII.GetString(bytes, 0, bytes.Length));

            new addMessageDelegate(Ajout_textbox2).Invoke(
                "Received broadcast from " + groupEP.ToString() + " :\n" +
                Encoding.ASCII.GetString(bytes, 0, bytes.Length));
        }
    }
Quelqu'un peut il me venir en aide ? Merci d'avance à tous !

4 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
13 janv. 2007 à 14:30
Salut,
Voici une source pour le passage de paramètre entre les Form et une source pour updater un control qui se trouve dans un thread différent (cross-threading)
Avec ça, tu devrais t'en sortir

<hr size="2" />-Blog-
0
walteau Messages postés 23 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 13 janvier 2007
13 janv. 2007 à 14:36
Merci, mais j'avais déja jeter un oeil à ces deux sources, le probleme auquel je suis confronté c'est que je ne peut ou plutot je ne sais pas modifier les donnees des controles de la premiere Form depuis la classe (gereudpmessage) que j'ai crée..
0
walteau Messages postés 23 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 13 janvier 2007
13 janv. 2007 à 14:52
Quelqu'un a-t-il une solution à mon problème svp ?
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
21 janv. 2007 à 22:06
0
Rejoignez-nous