[API] utilisation bouton fait Segfault le programme

utilisation bouton fait Segfault le programme [API] - API Win32 - Programmation

Marsh Posté le 29-09-2012 à 21:10:11    

Bonsoir les gens !
 
Alors je vous explique : j'ai une petite fenêtre en api, et j'ai un bouton qui lance l'exécution de tout un code assez long.
 
J'appuie une fois, j'attend que le long code se termine, et tout ce déroule bien. Seulement si pendant l'éxécution de ce long code j'appuie très vite en continue sur le bouton, le programme ne fonctionne plus ><, il plante.
 
Et j'essaye de comprendre pourquoi.  
J'ai essayé de stopper les messages envoyés à la procédure de fenêtre durant l'exécution du long code mais ca n'a rien fait.
J'ai aussi essayé de stopper l'action du bouton, genre lorsque le long code est en cours d'éxecution et que t'appuies sur le bouton rien ne ce passe. Mais ca plante toujours ><
 
Du coup je comprend pas vraiment comment cela fonctionne. Est ce que lorsque j'appuie sur le bouton, le code saute à la partie du code "bouton activé" ?
Si quelqu'un pouvait m'éclairer ce serait sympa  :)  
 
Merci.

Reply

Marsh Posté le 29-09-2012 à 21:10:11   

Reply

Marsh Posté le 29-09-2012 à 22:55:17    

Quand je fais du debug il m'affiche ca "An unhandled win32 exception occurred".
Aucune idée de ce que ca veut dire ><

Reply

Marsh Posté le 01-10-2012 à 11:45:38    

Les exécutions longue vont bloquer le programme et la fenêtre de l'application ne vas plus répondre.
Quand le traitement à effectuer est long, il faut le faire dans un thread a part. (Et éventuellement protéger la création du thread de façon a ce qu'elle soit unique pour empêcher de lancer plusieurs fois le traitement (via appuie successif rapide sur le bouton) avant que le traitement ne soit fini(une technique peut être de désactiver le bouton le temps du traitement).


---------------
Seul Google le sait...
Reply

Marsh Posté le 01-10-2012 à 15:31:06    

J'arrive à désactivez le bouton au début avec EnableWindow.
 
Mais même comme ca, si on appuie sur le bouton alors qu'il est désactivé, bien sûr il ce passe rien mais les messages sont quand même arrivés dans la file de message.
 
Du coup dès que je réactive le bouton à la fin du traitement, il se remet à faire les actions à cause des clics effectués ><.

Reply

Marsh Posté le 03-10-2012 à 15:21:48    

C'est bon, j'ai contourné le problème en mettant tout le long code dans un thread comme tu me l'as conseillé, merci ^^.
 
Ca fonctionne nickel.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed