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

C++/CLI Discussion :

arr�ter une boucle infinie avec DoEvents


Sujet :

C++/CLI

  1. #1
    Membre �clair�
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Par d�faut arr�ter une boucle infinie avec DoEvents
    J'ai un probl�me avec le DoEvents();
    j'ai un bouton mesurer qui m'affiche des valeurs random lorsque je clique dessus et un bouton arr�ter qui stop l'affichage.
    mon probl�me est qu'il faut que je clique deux fois sur le bouton ou bien je clique quelque part dans le form puis je clique sur le bouton pour que l'affichage s'arr�te
    voici mon code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    private: System::Void buttonMesurer_Click(System::Object^  sender, System::EventArgs^  e) {
     
    this->stop = false;
     
    while(!stop)
    {
    	Sleep(100);
    	Random ^rnd = gcnew Random();
            int  mesure = rnd->Next(100);//(dblValue*ratioValue);
    	 this->textBoxMesure->Text=mesure.ToString();
    	// this->Update();
    	 System::Windows::Forms::Application::DoEvents();		
    }
    }
     
    private: System::Void buttonArreter_Click(System::Object^  sender, System::EventArgs^  e) {
    			 this->stop = true;
    			 //this->Update();
    		 }
    Merci d'avance

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507
    Par d�faut
    Cachez ce code que je ne saurais voir.
    OK, je suis pas Moli�re.

    Vous ne faite pas un boucle infinie avec un appel � un dispatcher au milieu (c'est ce DoEvents). BEURRKK BEURRKK BEURRKKKKKK.

    Bon, reprenons les bases.

    Donc pas de boucle, vous cr�ez un thread d�di� qui se chargera de tirer les valeurs al�atoires et de les dispatcher � votre thread d'IHM.

    Form.Invoke pour le passage d'un thread de travail au thread ayant cr�� une From.
    http://msdn.microsoft.com/en-us/libr...rm.invoke.aspx

    En fait, moi, je me serais pas fait chi**, j'aurais d�clench� un timer de formulaire.
    http://msdn.microsoft.com/en-us/libr...rms.timer.aspx
    Et le timer n'a qu'� appeler une simple m�thode qui sera automatiquement ex�cut� dans le thread d'IHM.

  3. #3
    Membre �clair�
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Par d�faut
    Merci pour la r�ponse,
    Mais je crois que je ne peut pas utiliser un Timer car je ne sais pas combien de temps je veux ex�cuter le processus.
    Juste une remarque: m�me avec le timer il y a un DoEvents
    Alors comment je peux utiliser ce doevent???
    Pour le Threading je vais voir mais si j'arr�te le thread il se peut qu'il soit utilis� de nouveau dans un autre traitement (or il est tu�) et comme �a il y aura des craves cons�quences.
    Merci d'avance

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507
    Par d�faut
    Lachez ce puta** de "DoEvents".

    On va faire dans le simple.

    Mais je crois que je ne peut pas utiliser un Timer car je ne sais pas combien de temps je veux ex�cuter le processus.
    Un timer, �a se cr�e avec un constructeur (http://msdn.microsoft.com/en-us/library/e5e9tsdt.aspx), cela ce d�marre avec la m�thode Start (http://msdn.microsoft.com/en-us/libr...mer.start.aspx), �a s'arr�te avec la m�thode Stop (http://msdn.microsoft.com/en-us/libr...imer.stop.aspx), et cela se lib�re avec la m�thode Dispose (http://msdn.microsoft.com/en-us/library/3cc9y48w.aspx).

    Si vous enlevez toute cette cochonner** qui est dans votre m�thode "buttonMesurer_Click" pour n'y instancier qu'un Timer, mettre dans son Event Tick (http://msdn.microsoft.com/en-us/libr...imer.tick.aspx) votre m�thode qui g�n�re un nombre et qui modifie la valeur d'une propri�t� Text, mais surtout pas ce puta** de "DoEvents", configurer sa propri�t� Interval et appeler sa m�thode Start.
    Et si dans votre m�thode "buttonArreter_Click", vous stoppez le timer avec un appel � sa m�thode Stop et � sa m�thode Dispose.

    O� sera le l�zard (le probl�me)?

  5. #5
    Membre �clair�
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Par d�faut
    Citation Envoy� par bacelar Voir le message
    Lachez ce puta** de "DoEvents".
    m�me avec le timer il y a un DoEvents (L'exemple de msdn)
    Pourquoi vous d�testez ce DoEvents, est-il d'autant mauvais????
    Je veux juste une explication.
    Je vais voir le Timer mais j'ai un probl�me dans la configuration de l'interval car je ne sais pas vraiment quelle est la dur�e de cet interval?
    Merci

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507
    Par d�faut
    m�me avec le timer il y a un DoEvents (L'exemple de msdn)
    Heu, vous avez bien vu o� est le DoEvents dans l'ensemble de MSDN.

    Dans le Main, le seul et unique endroit o� il doit �tre et normalement, c'est m�me pas vous qui l'y mettez, mais le wizard de cr�ation de projet WinForm de VS.

    Pourquoi vous d�testez ce DoEvents, est-il d'autant mauvais????
    Je d�teste ce DoEvents car il n'a rien � faire l�.
    LISEZ LA DOC, surtout le passage "Caution" :
    http://msdn.microsoft.com/en-us/libr....doevents.aspx

    Vous �tes comme un enfant de 5 ans qui a trouv� une grenade � main d'il y a 70 ans et qui l'agite comme un hochet.

    Je veux juste une explication.
    RTFM

    j'ai un probl�me dans la configuration de l'interval
    Sleep(100) -> attente de 100 * 10^-3 secondes.
    Bin en lisant la DOC, Interval = 100.

Discussions similaires

  1. Probl�me pour arr�ter une boucle avec un bouton
    Par Zizook dans le forum Tkinter
    R�ponses: 17
    Dernier message: 17/03/2014, 13h26
  2. [QThread] Commencer avec QThread et une boucle infinie
    Par FoX_*D i E* dans le forum Multithreading
    R�ponses: 1
    Dernier message: 18/02/2014, 23h24
  3. Arr�ter une boucle infinie
    Par green_fr dans le forum Administration et Installation
    R�ponses: 1
    Dernier message: 26/08/2008, 14h44
  4. probleme avec une boucle infinie
    Par hunter99 dans le forum C++
    R�ponses: 3
    Dernier message: 26/12/2007, 23h37
  5. [FTP] comment corriger une boucle infinie ?
    Par sofybj dans le forum Langage
    R�ponses: 8
    Dernier message: 08/11/2005, 14h49

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