IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

probleme avec thread


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut probleme avec thread
    salut tout le monde
    j'ai besoin de vos aides,

    mon code est :


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    namespace IMMATRICULATION
    {
        public partial class frmControle_d_accée : Form
        {     
               public frmControle_d_accée()
            {
                InitializeComponent();
            }
     
    public class Threads : System.Windows.Forms.Form
            {
                private Thread test_thread;
     
                private void StartThread()
                {
                    test_thread = new Thread(new ThreadStart(lire_plaque));
                    test_thread.Name = "lecturethread";
                    test_thread.Start();
                }
     
     
     
     
                public void lire_plaque()
                {
                    if (RbDetectManuel.Checked == true)
                    {
     
                        File.Delete(path_image);
     
                        if (StartProcesscurlmanual() == true)
                        {
                            test_curl = true;
                        }
                    }
                    if (test_curl == false)
                    {
                        File.Delete(path_image);
                        if (StartProcess() == true)
                        {
                            test_curl = true;
                        }
                    }
                    if (File.Exists(path_image))
                    {
     
     
                        Image1.Image = null;
                        image2.Image = null;
                        // textBox2.Text = "";
                        // FileStream photoStream = new FileStream(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "bin\\current.jpg", FileMode.Open);
                        // Image1.Image = Image.FromStream(photoStream);
                        FileStream photoStream = new FileStream(path_image, FileMode.Open);
                        Image1.Image = Image.FromStream(photoStream);
                        photoStream.Close();
                        //Image1.Image =Image.FromFile(path_image);
     
                        if (StartProcesslecture() == true)
                        {
                            if (File.Exists("bin\\save\\detecter\\_1.bmp"))
                            {
                                image2.Image = Image.FromFile("bin\\save\\detecter\\_1.bmp");
                                parametre = "-recognize -i" + "save\\detecter\\_1.bmp";
                                if (StartProcessOCR() == true)
                                {
                                    LectureReseauNeaurone();
                                }
                                else
                                {
                                    File.Delete(path_image);
     
                                }
     
                            }
     
                        }
     
                    }
                    else
                    {
                        if (test_curl == false)
                        {
                            //test_thread.Start();
                        }
                    }
     
                }
     
            }
    }
    }
    le probleme est :

    Erreur : Impossible d'accéder à un membre non statique de type externe 'IMMATRICULATION.frmControle_d_accée' par l'intermédiaire du type imbriqué 'IMMATRICULATION.frmControle_d_accée.Threads'
    Comment résoudre cela ?

    Merci.

  2. #2
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Et si tu déclarais ta class Threads en dehors de la class frmControle_d_accée ?

    PS: moi je veux bien les accents dans les noms de class, ça fait joli mais je trouve que ça mérite d'aller au lit sans souper

  3. #3
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut
    salut,

    si je déclare la class Threads en dehors de la class frmControle_d_accée l'erreur devient :


    Erreur : Le nom 'lire_plaque' n'existe pas dans le contexte actuel (lire_plaque c'est le nom du fonction que je veut utiliser dans thread)

  4. #4
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Elle vient à quelle ligne cette erreur ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    Tu ne cherches pas à accéder à un élément visuel d'un formulaire depuis ton thread ?
    Si tel est le cas, regarde du côté des déléguées

  6. #6
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut
    salut,

    elle vient pour cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test_thread = new Thread(new ThreadStart(lire_plaque));

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    tu n'aurai pas une copie d'écran du message d'erreur.

    je pense que l'erreur est provoquée plus bas, directement dans ta fonction.

    par ailleurs, quel est le type de Image1 ?

  8. #8
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut
    Citation Envoyé par kineton Voir le message
    Tu ne cherches pas à accéder à un élément visuel d'un formulaire depuis ton thread ?
    Si tel est le cas, regarde du côté des déléguées

    OUI, je cherche à accéder à un élément visuel d'un formulaire depuis mon thread.

    comment procéder pour résoudre ce probléme??

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    regarde par là, j'y avais copié un lien intéressant:
    http://www.developpez.net/forums/d10...thread-vs-for/

  10. #10
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    J'ai essayé de recopier ton code dans un nouvelle form, mais il n'y a rien qui tient debout.
    1. ta class Threads, pourquoi hérite-t-elle de Form ?
    2. pourquoi veux-tu l'imbriquer dans la form

    Pose-toi bien les bonnes questions.
    Que doit faire ton thread ?
    Pourquoi ne passes-tu pas les données nécessaires au thread en paramètres ?

    Excuse-moi, mais il me semble que tu ne comprends pas vraiment ce que tu veux faire...
    Alors peut-être, explique nous avec des mots que l'on puisse t'aider...

  11. #11
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut
    Citation Envoyé par kineton Voir le message
    regarde par là, j'y avais copié un lien intéressant:
    http://www.developpez.net/forums/d10...thread-vs-for/
    j'ai ajouté à mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public delegate void deleg_lire_plaque();
    deleg_lire_plaque lance_lecture = new deleg_lire_plaque(lire_plaque);
    donc mon code devient:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    namespace IMMATRICULATION
    {
    
        
        public partial class frmControle_d_accée : Form
        {
             public delegate void deleg_lire_plaque();
    
             public frmControle_d_accée()
            {
                InitializeComponent();
            }
    
    public class Threads : System.Windows.Forms.Form
            {
                private Thread test_thread;
    
                deleg_lire_plaque lance_lecture = new deleg_lire_plaque(lire_plaque);
                
                private void StartThread()
                {
                  
                    test_thread = new Thread(new ThreadStart(lance_lecture));
                   // test_thread.Name = "lecturethread";
                    test_thread.Start();
                }
    
    
                public  void lire_plaque()
                {
    
    
                    if (RbDetectManuel.Checked == true)
                    {
    
                        File.Delete(path_image);
    
                        if (StartProcesscurlmanual() == true)
                        {
                            test_curl = true;
                        }
                    }
                    if (test_curl == false)
                    {
                        File.Delete(path_image);
                        if (StartProcess() == true)
                        {
                            test_curl = true;
                        }
                    }
                    if (File.Exists(path_image))
                    {
    
    
                        Image1.Image = null;
                        image2.Image = null;
                        // textBox2.Text = "";
                        // FileStream photoStream = new FileStream(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "bin\\current.jpg", FileMode.Open);
                        // Image1.Image = Image.FromStream(photoStream);
                        FileStream photoStream = new FileStream(path_image, FileMode.Open);
                        Image1.Image = Image.FromStream(photoStream);
                        photoStream.Close();
                        //Image1.Image =Image.FromFile(path_image);
    
                        if (StartProcesslecture() == true)
                        {
                            if (File.Exists("bin\\save\\detecter\\_1.bmp"))
                            {
                                image2.Image = Image.FromFile("bin\\save\\detecter\\_1.bmp");
                                parametre = "-recognize -i" + "save\\detecter\\_1.bmp";
                                if (StartProcessOCR() == true)
                                {
                                    LectureReseauNeaurone();
                                }
                                else
                                {
                                    File.Delete(path_image);
    
                                }
    
                            }
    
                        }
    
                    }
                    else
                    {
                        if (test_curl == false)
                        {
                            //test_thread.Start();
                        }
                    }
    
                }
    
    
            }

    mais ca marche pas et me donne les erreurs suivantes:
    pour la ligne du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (RbDetectManuel.Checked == true)
    Erreur:
    Impossible d'accéder à un membre non statique de type externe 'IMMATRICULATION.frmControle_d_accée' par l'intermédiaire du type imbriqué 'IMMATRICULATION.frmControle_d_accée.Threads'
    et pour la ligne du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    deleg_lire_plaque lance_lecture = new deleg_lire_plaque(lire_plaque);
    Erreur:
    Un initialiseur de champ ne peut pas faire référence au champ, à la méthode ou à la propriété non statique 'IMMATRICULATION.frmControle_d_accée.Threads.lire_plaque()'
    comment résoudre ce probléme??

Discussions similaires

  1. probleme avec thread
    Par TrollTop dans le forum C++/CLI
    Réponses: 3
    Dernier message: 27/02/2009, 14h15
  2. probleme avec thread
    Par opensource dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 10/07/2008, 17h01
  3. probleme avec thread en java
    Par manelinfo dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 20/05/2007, 18h27
  4. Des problemes avec ces threads <pthread.h>
    Par nasamad dans le forum GTK+ avec C & C++
    Réponses: 26
    Dernier message: 07/07/2006, 12h46
  5. [Thread] Probleme avec mon Timer
    Par Nico66 dans le forum EDT/SwingWorker
    Réponses: 10
    Dernier message: 02/06/2005, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo