Avoir la main pendant une exécution - C++ - Programmation
Marsh Posté le 11-05-2006 à 11:34:02
c'est ce que je suis en train de voir, mais je n'en ai jamais utilisé et j'ai un peu de mal a comprendre comment ça fonctionne exactement
Marsh Posté le 11-05-2006 à 11:39:05
Tout est dans la msdn, y'a des exemples, etc.
Reviens si tu as des soucis concrets.
Marsh Posté le 11-05-2006 à 11:44:18
Ok merci, en fait je suis déjà dans la MSDN, et si j'ai un soucis...
Marsh Posté le 11-05-2006 à 12:26:46
En fait, je comprend pas trop comment je dois m'y prendre avec mes deux boutons.
C'est vrai qu'il n'y a pas beaucoup d'explication pour travailler avec des threads sur le net en C++, par contre en Java...ça y'en a!
Bref, est-ce que je dois faire un thread pour chaque bouton? Ou un seul thread qui appel la fonction du bon bouton au bon moment?
Marsh Posté le 11-05-2006 à 13:23:08
Tu fais un thread qui communique sur ton port et l'autre gere tes boutons... Non ?
Marsh Posté le 11-05-2006 à 14:50:57
un seul bouton pour deux action c'est risqué car :
"il ne faut pas prendre les utilisateurs pour des boulets incultes mais il ne faut pas oublier qu'ils le sont"
Marsh Posté le 11-05-2006 à 14:57:29
il me faut forcement deux boutons
Par contre, si vous savez m'expliquer comment je dois procéder pour intégrer ma fonction qui exécute dans un thread et où je dois mettre ça dans mon programme ça m'aidera peut-être à y voir plus clair car je ne trouve pas ce genre de chose dans la MSDN (seulement les fonctions).
Je n'arrive pas à trouver d'explication sur un fonctionnement global des thread, ou comment on les utilises exactement,... Mais si quelqu'un a un bon cours de débutant je suis prenneuse, je pense que ça m'aiderait beaucoup et que ça m'éviterait de poser des questions stupides.
Marsh Posté le 11-05-2006 à 15:00:30
jan san kar a écrit : un seul bouton pour deux action c'est risqué car : |
pas mal
Marsh Posté le 11-05-2006 à 15:01:17
ben
-création de thread,
- lancement de l'execution du thread, en tache de fond
- evenement quand le thread se termine.
Marsh Posté le 11-05-2006 à 15:04:46
bubulle63 a écrit : Bonjour, |
tu peux aussi utiliser le mecanisme de "traitement de la boucle d'inactivité".
Expliqué ici dans la msdn en français : http://msdn.microsoft.com/library/ [...] essing.asp
grossierement, voila ce que tu fais dans ta boucle de traitement d'envoi et de reception de message par exemple :
Code :
|
si une iteration de traitement est rapide, tu peux ne faire cette gestion de message qu'une fois toute les n boucles par exemple.
Edit : Une petite explication tout de meme :
Quand tu clique sur ton bouton arreter, windows envoie un message a ton application pour lui signifier cet evenement (click), mais comme ton application est occupé dans un traitement, elle ne reçoit pas ce message.
La boucle donnée dans l'exemple force la consommation des messages eventuellement en attente par ton application.
Marsh Posté le 11-05-2006 à 16:35:22
En fait c'est pas mal ton idee
mais ça me fait une tout p'tit problème, c'est que quand j'apuie sur mon bouton Arrêter, le programme s'arrête toujours au même endroit même si j'appui pas au même moment. ???
Marsh Posté le 12-05-2006 à 10:34:16
bubulle63 a écrit : En fait c'est pas mal ton idee |
Ben tu fais comme tu avais pensé au début, tu mets a jour une variable booleene a TRUE que tu vérifies a chaque fois dans ta boucle de traitements.
Code :
|
Marsh Posté le 12-05-2006 à 10:52:35
Oui c'est comme ça que je fais.
Je pensait que le problème venait du fait qu'il faut attendre qu'une instruction de mon traitement se termine avant de tester mon bouton stop mais apparement ça s'arrête un peu quand ça veut.
J'ai aussi l'impression que plus j'ai d'instructions dans mon traitement plus mon bouton stop est précis dans l'endroit où il s'arrête.
C'est un peu bizzar, je pensait que vu comment mon programme est fait, dès que j'appui sur mon bouton, le traitement serait interrompu avant la prochaine instruction...
Marsh Posté le 11-05-2006 à 11:26:41
Bonjour,
je travail sur une application SDI développée sous Visual C++.
Dans mon application j'ai deux boutons:
-Executer : qui me permet de lancer mon application (envoie et reception de données par le port COM)
-Arrêter : pour arrêter le transfert de ses données quand j'appuie dessus.
mon problème est que une fois que mon transfert de données est en cours, si j'appuie sur le bouton arrêter ça na marche pas. Mon bouton n'a aucun effet.
En fait, lorsque j'appuie sur le bouton Arrêter, mon programme est sensé mettre une variable à TRUE. Et dans ma boucle d'exécution, je teste si la variable est à TRUE. Si c'est le cas, normalement, j'arrête mon programme. Hors en réalité, mon programme s"execute j'usqu'à la fin.
Je comprend pas pourquoi.
Avez vous des idées?