Le programme ne répond pas !

Résolu
yepla75 Messages postés 34 Date d'inscription jeudi 19 octobre 2006 Statut Membre Dernière intervention 13 juin 2007 - 15 nov. 2006 à 14:55
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 - 15 nov. 2006 à 20:52
Bonjour,

J'ai fait un programme en C / API Win32 ; pendant l'exécution, si je clicke sur la croix en haut à droite de la fenêtre principale (quitter), j'ai la fenêtre bien connue "This program is not responding...".

Connaissez-vous le pourquoi du comment ?

Même s'il s'agit d'une sortie "brutale", pourquoi réagit-il ainsi ?

Merci

6 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
15 nov. 2006 à 15:38
Pardon
En fait, cela arrive lors d'un traitement d'une certaine durée (nombreux calculs, boucles infinies,...) dans le même thread que celui de ton IHM

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
3
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
15 nov. 2006 à 15:36
S'il ne répond pas, laisse un message sur le répondeur!

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
15 nov. 2006 à 15:45
Tu peux utiliser l'event WM_CLOSE dans wndProc et envoyer des SendMessage() à tes controles qui serait en train de boucler pour les débloquer. (ex listBox, comboBox, rtf ect...)
A mon avis c'est plutôt une opération de dessin qui te bloque.
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
15 nov. 2006 à 15:48
En fait ce que buno essaye de te dire , c'est qu'en général pour éviter de figer l'interface de ton programme et donc qu'il réagisse vite aux actions de l'utilisateur, on insére les codes longs en exécution dans des threads !
J'entends par codes longs des boucles à répétition avec de longs calculs, ou même des boucles infinies (pas si infinies que d'ailleurs normalement ).
Et donc si ton interface se fige c'est sûrement dû à ce que buno et moi-même t'avons expliqué.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yepla75 Messages postés 34 Date d'inscription jeudi 19 octobre 2006 Statut Membre Dernière intervention 13 juin 2007
15 nov. 2006 à 20:35
Donc si j'ai bien compris, pour éviter cela, il faudrait créer un thread autre que celui de l'IHM dans lequel tourne les gros traitements ?

Merci à vous et bonne soirée
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
15 nov. 2006 à 20:52
Voilà c'est exactement ça ! t'as tout compris !
Bon courage.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
Rejoignez-nous