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

VC++ .NET Discussion :

[vc++ 2005] acceder a un textbox a partir d un thread


Sujet :

VC++ .NET

  1. #1
    Membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Juillet 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Juillet 2006
    Messages : 61
    Points : 46
    Points
    46
    Par défaut [vc++ 2005] acceder a un textbox a partir d un thread
    Voila, j'ai un thread dans un Form et pendant l'execution de ce thread, je voudrais afficher des informations sur ma Form
    Ca compile bien mais pendant l'execution j'ai cette erreur :

    An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll

    Additional information: Cross-thread operation not valid: Control 'richTextBox1' accessed from a thread other than the thread it was created on.


    comment faire svp?
    merci

  2. #2
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    bah c'est en anglais dans le texte

    Control 'richTextBox1' accessed from a thread other than the thread it was created on
    le controle essaie d'acceder à un thread autre que celui qui l'a crée. Il faut passer par une variable intermédiaire et désynchroniser la variable (en tout cas c'était ca sur V6)

  3. #3
    Membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Juillet 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Juillet 2006
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    mais j'aimerais justement ne pas desynchroniser et afficher en temp reel les variable du thread dans le richTextBox

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Hors .Net, j'aurais utilisé SendMessage(), qui permet justement d'interroger d'un thread à l'autre.

    Mais je ne sais même pas s'il existe un équivalent en Winforms...

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu peux aller regarder l'exemple ici http://nico-pyright.developpez.com/t...ms/#Lform_load de la barre de progression qui est mise à jour depuis un thread

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Mais ça, la barre de progression ACCEPTE d'être mise à jour par un autre thread...

    Le RichEdit, non...

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Tiens, j'ai jeté un coup d'oeil à System::Windows::Forms::Control, et je pense que tu devrais peut-être regarder du coté de Control::BeginInvoke()...

  8. #8
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    Citation Envoyé par jerome86600
    mais j'aimerais justement ne pas desynchroniser et afficher en temp reel les variable du thread dans le richTextBox
    ca sera en "temps réel". Quand je dis désynchronisé, c'est au niveau systeme. En gros, entre le moment ou tu auras ta variable et le moment ou il sera afficher, il va s'écouler entre 50 et 100ms

  9. #9
    Membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Juillet 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Juillet 2006
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    Merci a tous de vos reponses,

    j ai resolu temporairement mon pb en declarant des variables globale qui recupere les valeur ds le thread et les affiche a l aide d'un timer.
    je trouve que ca fait bcq de code en plus, surtout que je doit transformer les char en system::string mais ca a l'air de marcher pour l instant.
    J'essayer d'ameliorer mon code quand j'orai plus de temps.

    merci
    ++

  10. #10
    Membre du Club
    Profil pro
    Ingénieur
    Inscrit en
    Juillet 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Juillet 2006
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    Arf, maintenant j'ai le meme probleme avec une messagebox
    comment faire appel a une messagebox a partir d'un thread?

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/05/2008, 15h07
  2. Réponses: 7
    Dernier message: 23/08/2006, 18h40
  3. Réponses: 2
    Dernier message: 11/08/2006, 13h35
  4. [C#] Visual 2005 : Sortie d'un textBox via la touche Entrée
    Par Gold.strike dans le forum Windows Forms
    Réponses: 5
    Dernier message: 08/08/2006, 17h03
  5. Réponses: 4
    Dernier message: 28/07/2006, 14h01

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