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++/CLI Discussion :

Exeption avec thread


Sujet :

C++/CLI

  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Par défaut Exeption avec thread
    Bonjour,
    j'ai cette exception
    Opération inter-threads non valide*: le contrôle 'textBoxMesure' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
    je sais pas comment la résoudre, je suis débutante avec les threads
    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
     
    private: void ThrFunc()
    			{
    				while(1)
    				{
    					Random ^rnd = gcnew Random();
    					int  mesure = rnd->Next(100);
    					this->textBoxMesure->Text=mesure.ToString();
    				}
    			}
     
    	private: System::Void buttonMesurer_Click(System::Object^  sender, System::EventArgs^  e) {
     
    				 // ThrFunc est la fonction exécutée par le thread.
    				 _Thread = gcnew Thread(gcnew ThreadStart(this, &Form1::ThrFunc));
    				 // Il est parfois pratique de nommer les threads surtout si on en créé plusieurs.
    				 _Thread->Name = "Thread1"; 
    				 // Démarrage du thread.
    				 _Thread->Start();
     
     
    			 }
    c'est ici que apparaît l'exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this->textBoxMesure->Text=mesure.ToString();
    j'ai trouvé qu'il faut utiliser les délégués mais j'arrive à convertir le code j'aurai des erreurs

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    un thread ne peut pas toucher aux controles d'une Form, seul le thread de la form est authorisé à le faire.

    Tu dois utiliser la methode Invoke (plein d'exemples ici ou là, en autre sur ce forum).

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    Pas de boucle infinie, SVP.
    Cela bloquera l'affichage.

    Pensez à utiliser les timer de Form qui permettent de gérer des appels périodiques de méthode directement dans le thread du From.

  4. #4
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Par défaut
    Je ne peux pas utiliser le timer car je ne sais pas la durée du traitement,
    je veux que le traitement continue jusqu'à ce que je l'arrête manuellement
    .
    Merci pour les remarques

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    Bin oui.
    Tu démarres le Timer avec la méthode Start sur "buttonMesurer_Click" et tu appelles sa méthode Stop quand tu veux qu'il s'arrête.

    Lis cette putai* de doc. (3 messages pour faire entré ça, c'est 2 de trop).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. plusieurs instance de classe avec thread
    Par lucky dans le forum MFC
    Réponses: 2
    Dernier message: 14/09/2006, 11h30
  2. Petit soucis avec Thread::Queue et une classe
    Par vodevil dans le forum Web
    Réponses: 16
    Dernier message: 09/06/2006, 21h41
  3. [SWING] Exception bizarre avec Thread
    Par Gob4 dans le forum Débuter
    Réponses: 2
    Dernier message: 13/09/2005, 21h55
  4. [MFC] Cherche Timer avec thread
    Par romeo9423 dans le forum MFC
    Réponses: 17
    Dernier message: 09/03/2005, 10h33
  5. Variable static avec thread
    Par oxor3 dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 27/08/2004, 11h45

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