Multi thread c#
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Multi thread c#



  1. #1
    Tektocraft

    Multi thread c#


    ------

    Bonjour,
    Je refais appelle a vous pour un autre problème au qu'elle j'ai deja trouver plusieurs solution sur google mais étant débutant je ne comprend pas les solution proposé ses pourquoi je fais appelle a vous pour m'expliquer plus clairement ce qui pause problème avec mes threads voici mon code
    Code:
    using system;
    using system.collections.generic;
    using system.componentmodel;
    using system.data;
    using system.drawing;
    using system.linq;
    using system.text;
    using system.threading.tasks;
    using system.windows.forms;
    using system.io.ports;
    
    namespace windowsformsapplication2
    {
        public partial class form1 : form
        {
            public int ini;
            public int dema;
            public string sac = "ggg";
            public string ssc;
            public string ca1;
            public int c1;
            private serialport myport;
            public form1()
    
            {
    
                initializecomponent();
                init();
              
            }
           
            
            private void init()
            {
                
                if (dema == 0)
                {
                    if (sac == "1") { ssc = sac; dema = 1; }
                    if (sac == "2") { ssc = sac; dema = 1; }
                    if (sac == "3") { ssc = sac; dema = 1; }
                    if (sac == "4") { ssc = sac; dema = 1; }
                    if (sac == "5") { ssc = sac; dema = 1; }
                    if (sac == "6") { ssc = sac; dema = 1; }
                    if (sac == "7") { ssc = sac; dema = 1; }
                    if (sac == "8") { ssc = sac; dema = 1; }
                    if (sac == "9") { ssc = sac; dema = 1; }
                    if (sac == "10") { ssc = sac; dema = 1; }
                    if (sac == "11") { ssc = sac; dema = 1; }
                    if (sac == "12") { ssc = sac; dema = 1; }
                    if (sac == "13") { ssc = sac; dema = 1; }
                    if (sac == "14") { ssc = sac; dema = 1; }
                    if (sac == "15") { ssc = sac; dema = 1; }
                    if (sac == "16") { ssc = sac; dema = 1; }
                    if (sac == "17") { ssc = sac; dema = 1; }
                    if (sac == "18") { ssc = sac; dema = 1; }
                    if (sac == "19") { ssc = sac; dema = 1; }
                    if (sac == "20") { ssc = sac; dema = 1; }
                    if (sac == "22") { ssc = sac; dema = 1; }
                    if (sac == "23") { ssc = sac; dema = 1; }
                    if (sac == "24") { ssc = sac; dema = 1; }
                    if (sac == "25") { ssc = sac; dema = 1; }
                    if (sac == "26") { ssc = sac; dema = 1; }
                    if (ssc == "0") { dema = 0; }
                }
                if (dema == 1)
                {
                    if (ssc == "1") { sac301.text = sac; }
                    if (ssc == "2") { sac302.text = sac; }
                    if (ssc == "3") { sac303.text = sac; }
                    if (ssc == "4") { sac304.text = sac; }
                    if (ssc == "5") { sac305.text = sac; }
                    if (ssc == "6") { sac306.text = sac; }
                    if (ssc == "7") { sac307.text = sac; }
                    if (ssc == "8") { sac308.text = sac; }
                    if (ssc == "9") { sac309.text = sac; }
                    if (ssc == "10") { sac310.text = sac; }
                    if (ssc == "11") { sac311.text = sac; }
                    if (ssc == "12") { sac312.text = sac; }
                    if (ssc == "13") { sac313.text = sac; }
                    if (ssc == "14") { sac314.text = sac; }
                    if (ssc == "15") { sac315.text = sac; }
                    if (ssc == "16") { sac316.text = sac; }
                    if (ssc == "17") { sac317.text = sac; }
                    if (ssc == "18") { sac318.text = sac; }
                    if (ssc == "19") { sac319.text = sac; }
                    if (ssc == "20") { sac320.text = sac; }
                    if (ssc == "21") { sac321.text = sac; }
                    if (ssc == "22") { sac322.text = sac; }
                    if (ssc == "23") { sac323.text = sac; }
                    if (ssc == "24") { sac324.text = sac; }
                    if (ssc == "25") { sac325.text = sac; }
                    if (ssc == "26") { sac325.text = sac; }
                    if (ssc == "0") { dema = 0; }
                }
    
    
                if (ini == 0)
                {
                    try
                    {
                        myport = new serialport();
                        myport.baudrate = 9600;
                        myport.portname = "com" + numericupdown1.value;
    
                        myport.parity = parity.none;
    
                        myport.stopbits = stopbits.one;
                        myport.datareceived += serialport1_datareceived;
                        myport.readtimeout = 500;
                        ini = 1;
                    }
                    catch (exception)
                    {
                        messagebox.show("error!!");
                        ini = 1;
                    }
                }
            }
            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    private void serialport1_datareceived(object sender, serialdatareceivedeventargs e)
            {
                sac = myport.readexisting();
               init();
                }
            
       
    
            private void off_btn_click(object sender, eventargs e)
            { }
    
    
    
            private void cobtn(object sender, eventargs e)
            {
                try
    
                {
    
                    myport.portname = "com" + numericupdown1.value;
                    myport.open();
                    messagebox.show("vous etes desormé connecté au gestionnaire de sac");
                }
                catch (exception)
                {
                    messagebox.show("aucun gestionnaire de sac n'est connecté sur se port");
                }
    
    
    
            }
    
    
    
    
    
    
            private void checkbox1_checkedchanged(object sender, eventargs e)
            {
                if (c1 == 1)
                {
    
                    myport.writeline("a");
    
                    c1 = 0;
                }
                else
                {
                    myport.writeline("b");
                    c1 = 1;
                }
            }
        }
    }
    Est le message d'erreur est :
    Une exception non gérée du type 'System.InvalidOperationExcept ion' s'est produite dans System.Windows.Forms.dll

    Informations supplémentaires : Opération inter-threads non valide : le contrôle 'sac309' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.

    Je ne pense pas avoir besoin de préciser que le message est le meme pour les label sac301[...] sac326.
    Merci d'avance.

    -----

  2. #2
    Bluedeep

    Re : Multi thread c#

    Bonjour

    En .NET, quand tu opéres en multithread sur une application Winform, les méthodes des contrôle écrans ne peuvent être appelées que par depuis leur thread de création.
    Heureusement, tous les contrôles Winform expose une méthode Invoke qui, elle, peut être appelée par un thread quelconque et permet d'invoquer les autres méthodes des contrôles sur leur thead d'instanciation.(invocation indirecte).

    Dit comme ça, je conçois que c'est pas forcément très clair; j'essaierais de te poser un exemple plus tard (quand j'aurai un peu de temps).

  3. #3
    Bluedeep

    Re : Multi thread c#

    En attendant que je te poste un exemple, je t'invite à jeter un oeil sur ce fil de discussion qui décrit très bien le problème :
    http://stackoverflow.com/questions/6...er-thread-in-c

Discussions similaires

  1. Le MSAN,Multi-Service Access Node ou le Noeud d'Accès Multi-Service
    Par invitedbc53c88 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 22/03/2010, 15h01
  2. PIC, multi thread ?
    Par invite116c4f9b dans le forum Électronique
    Réponses: 6
    Dernier message: 23/10/2007, 22h14
  3. Chargeur (GSM) - multi input - multi output
    Par james_patageul dans le forum Électronique
    Réponses: 0
    Dernier message: 15/07/2006, 18h14