Accueil > Forum > > > > sortir d'une boucle while infinie avec un bouton
sortir d'une boucle while infinie avec un bouton
mercredi 21 juillet 2004 à 20:28:15 |
sortir d'une boucle while infinie avec un bouton

bertrandbasch
|
Bonjour, En fait je voudrai pouvoir lancer une boucle while à l'aide d'un bouton 1 qui pourrait être stoppé à l'aide d'un bouton stop. Il me faut cette boucle infinie car ce programme doit être relié à une chaine de production via les ports de l'ordinateur et le tout doit donc ce faire dans un cycle automatique (d'où ma boucle while infinie). Je me suis reseigné sur les threads mais je vois pas comment dans le deuxième thread on peu accéder à l'évènement du bouton... Si qqn peut me renseigner ou aurait une autre solution merci de m'aider. Bertrand
|
|
mercredi 21 juillet 2004 à 21:04:48 |
Re : sortir d'une boucle while infinie avec un bouton

3psilon
|
lut
Ne pourrais tu pas faire avec 2 threads :
un qui fait la boucle et un qui commande le demarrage ou l'arret de la boucle ( du thread ) ?
Meme si apparement c de l'indus, ne peux-tu pas utiliser un timer ?
Bye
3psilon
|
|
mercredi 21 juillet 2004 à 21:36:04 |
Re : sortir d'une boucle while infinie avec un bouton

bertrandbasch
|
oué ben le deuxième thread c comme ça que je le vois moi aussi. Mais comment je fais pour détecter l'évènement du bouton à partir de ce deuxième thread? Si j'ai cette réponse je peux faire le code. Merci pour l'aide.
Et sinon, comment tu vois ça avec un timer.
je vous explique vite fait le fct.
C un Système pour faire des mesures(controles)
Automate principale donne l'ordre a mon soft de faire la mesure (via port parallèle) puis le soft fait une requete rs232 à l'appareil de mesure qui donne ensuite la mesure à mon soft. fonctionnement en cycle que je veux tout de même pouvoir arrêter quand je le veux.
Bertrand
|
|
mercredi 21 juillet 2004 à 23:27:43 |
Re : sortir d'une boucle while infinie avec un bouton

3psilon
|
slt
Je deja répondu mais ca n'as pas été pris en compte :(, alors je repost :)
je viens de tester et cela fonctionne tu peux tres bien lancer un thread puis l'arreter quand tu le desires.
genre :
DWORD dwThread; // id du thread HANDLE hThread; // handle du thread
// LA BOUCLE INFINIE DWORD WINAPI Infinity(LPVOID lpParameter) { while(true){} return 0; }
void Startthread(){ hThread = CreateThread(NULL,0,&Infinity,NULL,NULL,&dwThread); } void Stopthread(){ TerminateThread (hThread,0); // 2e param a remplir pour la } // gestion des erreurs
.... .... ..//EVENEMENT CLICK BOUTON case IDCSTART: { Startthread(); break; } case IDCSTOP: { Stopthread(); break; } default:break; ...... ... ..
Finalement pas besoin de timer ;)
Bye
3psilon
|
|
mercredi 21 juillet 2004 à 23:30:18 |
Re : sortir d'une boucle while infinie avec un bouton

BruNews
|
mets une variable: int bstop;
avant chaque lancement du thread: bstop = 0;
dans bouton bstop = 1; tu verif a chaque tour de boucle bstop dans le thread.
ciao... BruNews, Admin CS, MVP Visual C++
|
|
jeudi 22 juillet 2004 à 08:23:16 |
Re : sortir d'une boucle while infinie avec un bouton

bertrandbasch
|
Tout d´abord merci pour l´aide. si j´ai bien compris avec ce code on lance et on arrete la boucle infinie avec le meme bouton, c ca? Je débute en c++.... Sinon j´aimerai qu´on m´éclaire sur IDCSTART et IDCSTOP. Je vois pas trop d´où ca sort.
mon code ca va ressembler a ca alors?:
bool bstop=true;
DWORD dwThread; // id du thread HANDLE hThread; // handle du thread
// LA BOUCLE INFINIE DWORD WINAPI Infinity(LPVOID lpParameter) { while(bstop){} return 0; }
void Startthread(){ hThread = CreateThread(NULL,0,&Infinity,NULL,NULL,&dwThread); } void Stopthread(){ TerminateThread (hThread,0); // 2e param a remplir pour la } // gestion des erreurs
_fastcall void BoutonClick(....){ //je connais plus tro la syntaxe... case IDCSTART: { Startthread(); break; } case IDCSTOP: { bstop=false; Stopthread(); break; } default:break; }
Merci si vous pouvez confirmez, j´ai pas BORLAND au boulot pour tester.
|
|
jeudi 22 juillet 2004 à 11:06:29 |
Re : sortir d'une boucle while infinie avec un bouton

BruNews
|
TerminateThread ne doit etre employe qu'en cas de blocage, c'est une instruction d'extreme urgence. Regarde exemples dans les sources publiees, details complets dans Richter: http://brunews.free.fr/brunews/download/JR4.zip http://brunews.free.fr/brunews/download/JR4Sources.zip
ciao... BruNews, Admin CS, MVP Visual C++
|
|
jeudi 22 juillet 2004 à 12:01:59 |
Re : sortir d'une boucle while infinie avec un bouton

3psilon
|
Re tlm
En effet, je n'avais pas lu msdn jusqu'au bout ;) dsl
" TerminateThread is used to cause a thread to exit. When this occurs, the target thread has no chance to execute any user-mode code and its initial stack is not deallocated. DLLs attached to the thread are not notified that the thread is terminating. "
Mais alors, comment tu ferais brunews ? Une condition ds le deuxieme thread pour etre sur de sortir de la boucle ou y a t il un autre moyen ?
bertrandbasch> IDCSTART et IDCSTOP sont juste les noms que j'ai donné aux buttons
Merci
ps: Brunews, J'ai un grand respect pour le travail que tu fournis, felicitations, en plus tes persans sont magnifiques .... bonne continuation ;)
+++
3psilon
|
|
jeudi 22 juillet 2004 à 12:11:10 |
Re : sortir d'une boucle while infinie avec un bouton

bertrandbasch
|
---->3psilon
Je vois pas comment ca marchait ton truc alors.
Ce code:
case IDCSTART: { Startthread(); break; } case IDCSTOP: { Stopthread(); break; } default:break;
tu le places dans quelle fonction?
sinon je suis dáccord. Impressionant le boulot de Brunews Je suis a des annees lumieres de ca.
Bon si vous avez une soluce qui soit "propre"...
Bertrand
|
|
jeudi 22 juillet 2004 à 12:19:06 |
Re : sortir d'une boucle while infinie avec un bouton

BruNews
|
DWORD dwThread; // id du thread HANDLE hThread; // handle du thread
case IDCSTART: { if(hThread) break; // thread deja en cours bstop = 0; Startthread(); break; } case IDCSTOP: { bstop = 1; break; }
Verif bstop dans boucle de ta func thread et sors proprement en retournant une valeur. Avanr sortie, PostMessage un (WM_USER + xxx) a la fenetre qui cree ce thread. A reception de ce message, fenetre ferme hthread (CloseHandle(hThread); hThread = 0;) et autres trucs suivant besoin.
ciao... BruNews, Admin CS, MVP Visual C++
|
|
Cette discussion est classée dans : bouton, boucle, while, sortir, infinie
Répondre à ce message
Sujets en rapport avec ce message
arret boucle while par clic bouton [ par julienbornet ]
Bonjour, je suis entrain de programer une API. Cette api est programmer dans une dialogu box. et je chehce a arreter une boucle while lorsque l'utilis
pti pb de thread [ par sena ]
Bonjour,j'ai un prog dans lequel je créé un thread.Ce thread tourne en boucle. Dedans j'ai une boucle While(true)Je voudrais savoir comment je pourrai
boucle infinie [ par Masshysteria63 ]
J'ai un problème de boucle qui tourne indéfiniment lorsque l'untilisateur tape un caractère à la place d'un chiffre avec utilisation d'une boucle cond
boucle while [ par oceane67 ]
bonjour, j'ai un probleme avec une boucle while, le code est simple mais je trouve pas le probleme:i=0; j=0; cout cin>>rep; do { if (strcm
boucle infinie, plantage du prog [ par windowsfashion ]
bonjour Je suis debutant en c++ Quand je demande un nombre (avec cin) et que l'on met à la place des caracteres au lieu d'un nombre, ba sa me fait
sortir d'une boucle [ par adeteine ]
Salut, J'ecris un petit logiciel de compte à rebours spécifique avec un bouton start et un bouton stop sur visual c++ 6.0. En cliquant sur start, mon
bouton stop [ par rlope ]
BonjourJ'ai un petit problème avec un bouton STOP que je voudrais créer. (Visual C++ boite de dialogue)Explication :Avec un bouton de ma boite de dial
linux [ par rawen ]
svp vou pouvez m'aider de faire un mini compilateur en langage lex/yacc pour qu'il puisse faire compiler 3 boucles en langage C -la boucle for -la bou
boucle do while et timer [ par gogeta2003 ]
Salut, je doit récupérer une valeur que je lis sur une carte E/S, et j'attend dans une boucle infini pour passer au cycle suivant tant que je n'ai pas
boucle infinie,enfin presque... [ par booth ]
bonjour, je suis semi newbie en C++, et je viens de faire un prog avec des sockets...le truc c'est que je suis obligé d'utiliser une boucle ainfinie p
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|