Thread qui ne se termine pas !

gdpasmini Messages postés 80 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 30 mars 2007 - 21 avril 2006 à 09:25
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 21 avril 2006 à 22:34
Hello !!

j'ai un petit probleme. je crée des threads dans un progamme C sous visual c++ express edition sans MFC.

Mais voila, je n'arrive pas a les arreter !!

Voila mon code :


hThreads[threadNumberEnExecution].thread = CreateThread(NULL,0,graph2,(LPVOID)threadNumberEnExecution,0,NULL);

...


if
(!GetExitCodeThread(hThreads[threadNumberEnExecution].thread, (LPDWORD)&exitCode))
MessageBox(hwnd,"terminé", "impossible d'obtenir un code de destruction du thread", MB_ICONQUESTION);


if(!TerminateThread(hThreads[threadNumberEnExecution].thread, exitCode))
MessageBox(hwnd,"terminé", "impossible de terminer le thread", MB_ICONQUESTION);

quelqu'un voit il le probleme ??

Merci d'avance !

7 réponses

cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
21 avril 2006 à 11:56
ton thread retourne bien 0x0 quand tu as fini l'action???





je dev pas windows, mais sous wx il faut un return NULL; ou return 0x0; pour arreter le thread.



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
gdpasmini Messages postés 80 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 30 mars 2007
21 avril 2006 à 13:53
En fait, sous windows, un return NULL indique une erreur.. Mais je ne comprend pas laquelle... Quelles peuvet etre les raisons de cette echec ??

Merci pour ton aide !
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
21 avril 2006 à 13:56
est-ce que tu as la possibilité de Tester le destruction, sous widgets

if( TestDestroy() ) return NULL;



@+;
satellite34

http://www.rootscommunity.com/</FON< body>
0
gdpasmini Messages postés 80 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 30 mars 2007
21 avril 2006 à 14:24
Non, je ne crois pas que cela existe... ou alors je ne connais pas. Je débute dans l'API windows, alors c'est un peu laborieux !!

En fait, lorsque je cré mon thread, je met le Handle dans un des champs d'une stucture. Lorsque je desire effectuer la meme operation que le thread précédent avant que ce dernier ne soit arrété, j'arrete le thread précédent et je relance un nouveau thread contenant la meme fonction. Mais le thread n'a pas l'air de s'arreter et lorsque je créé le nouveau thread qui effectue la meme action, je ne fais que copier le nouveau handle dans ma structure a la place de l'ancien ! Tout marche bien mais je sais pas si c'est tres bon d'avoir 36 thread dont je ne connais pas l'etat...

J'espere que tu me suis... c'est pas facile a expliquer !
0

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

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
21 avril 2006 à 17:58
Pour terminer un thread "sauvagement" c'est TerminateThread. Sinon, ta routine soit en effet retourner NULL. Et n'oublie pas qu'il faut fermer le HANDLE avec CloseHandle.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
21 avril 2006 à 19:39
Que se passe-t-il si tu attend la fin du thread via
WaitForSingleObject(hThreads[threadNumberEnExecution].thread,INFINITE); ?
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
21 avril 2006 à 22:34
Et bien dapprais ce qu'il dit, il va attendre très longtemps.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
Rejoignez-nous