Bonjour,

Tout d'abord je voudrai remercier la communaut� de developpez.net o� j'ai pu trouver des solutions � la plupart de mes probl�mes rien qu'en parcourant les forums, les FAQ et les tutoriaux depuis plus d'un an maintenant.

Je r�alise en ce moment un projet sous visual studio C++ 2008 bas� sur une windows form sens�e afficher des donn�es re�ues via un p�riph�rique externe (type port s�rie) dans une textBox. Il y a donc un thread (n�1) consacr� aux contr�les de la windows Form et un autre thread (n�2) qui g�re les communications avec le p�riph�rique.

Lorsqu'une trame est re�ue par le thread n�2 je ne peux pas directement l'�crire dans la textBox de mon interface. J'ai donc mis en place un delegate pour pouvoir acc�der aux routines de l'interface graphique. Il est d�clar� dans un .h commun � tout le projet :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
delegate void Ecrire(void);
Le code � ex�cuter pour �crire dans la textbox est d�crit dans la classe de la windows form(Projet::Form1). Pour l'instant je veux juste afficher OK � chaque r�ception d'une trame:

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
public: void EcrireTextBox(void)
		{
			textBox1->AppendText("OK");
		}
Enfin, dans le fichier .cpp contenant les fonctions bas de niveau de communication avec le port s�rie je fais appel au d�l�gu� pour acc�der � EcrireTextBox :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
Projet::Form1 ^ pnt = gcnew Projet::Form1;
Ecrire ^ delegue = gcnew Ecrire(pnt, &Projet::Form1::EcrireTextBox);
delegue->Invoke();
Quand je met tout �a en debug je vois que lorsqu'une trame est re�ue je rentre bien dans la fonction "EcrireTextBox" et son code est ex�cut�. Par contre rien ne s'affiche dans la TextBox. En observant les outils de debug j'ai vu que le programme restait toujours dans le thread n�2 ce qui, pour moi, explique qu'il n'y a aucun effet sur la textBox (g�r�e par le thread n�1).

Comment puis-je redonner la main � l'interface graphique (thread n�1) juste le temps de modifier la textbox?

Merci d'avance