Bouton d'arret d'urgence

Signaler
Messages postés
34
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
12 mai 2004
-
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
-
Bonjour, j'ai cree une application qui lorsqu'on appui sur un bouton lance un traitement. ce traitement peut être long et je souhaiterai avoir la possibilite de l'arreter a tout moment.
Je souhaite pouvoir appuyer sur un autre bouton et recuperer cet evenement dans mon traitemen tpour pouvoir le stopper.

Quelqu'un aurait-il une idée sur la façon de s'y prendre ? ou deja effectué cela
Merci,

6 réponses

Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Bonjour,

Je viens de rajouter une exemple sur le site.

Va voir à cette URL :
http://www.cppfrance.com/code.aspx?ID=20707

@+
Arnotic
Admin CS, MVP Visual C++
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Bonjour,

Oui tu fais ton traitement dans un thread.
Le thread doit stopper seulement dans 3 conditions :
Erreur de traitement,
Fin du traitement,
Event si appui sur bouton d'arret.

@+
Arnotic
Admin CS, MVP Visual C++
Messages postés
34
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
12 mai 2004

Merci de l'info,
Autais tu un exemple d'utilisation de thread a cette fin?
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Bonjour,

Dans ton thread tu mets :

do
{

/*-- on boucle tant que l'on n'a pas recut d'événement stopper --*/
}while( WaitForSingleObject( eventStopSound, D_TIME_OUT_STOP_SOUND ) == WAIT_TIMEOUT );

/*-- on ferme --*/
CloseHandle( d_eventStopSound );
d_eventStopSound = NULL;

après ta boucle dans le thread tu rajoutes :
/*-- on ferme --*/
CloseHandle( d_eventStopSound );
d_eventStopSound = NULL;

avant tout il y a quelques déclaration à faire :
#define D_TIME_OUT_STOP_SOUND 1L
HANDLE d_eventStopSound = NULL;
d_eventStopSound = CreateEvent(NULL,FALSE, FALSE, D_EVENT_STOP_SOUND);

sur ton bouton d'arret tu mets le code pour activer l'event :
/*-- mettre dans le bouton d'arret d'urgence --*/
SetEvent( d_eventStopSound );

@+
Arnotic
Admin CS, MVP Visual C++
Messages postés
34
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
12 mai 2004

En fait j'ai l'impression que lorsque je click sur le bouton d'arret, il ne fonctionne pas (lorsque mon appli est en cours de d'utilisation )
Y' a t il quelque chos ea faire pour que le bouton soit operationnel et que l'evennement soit pris en compte ?
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Bonjour,

Justement en utilisant des threads, et pas faire une boucle direct dans le programme.

Je vais essayer de mettre une source d'exemple ce soir sur le site, je te tiens au courant !

@+
Arnotic
Admin CS, MVP Visual C++