Terminer un thread?

Signaler
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
-
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
-
salut a tous.

bon voila le pb, jai une dialogbox avec un thread d'initialisation de cette dialogbox, et je voudrais dans certains cas interrompre brutalement ce thread, et avec terminate thread, la code de retour est toujours 0.....je capte pas pourquoi.....merci de votre aide.

DWORD Thread_TestID;
DWORD WINAPI Thread_Test( LPVOID lpParam );

BOOL CALLBACK DlgProc (HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
g_hPrev = hdlg;
SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(0, IDI_APPLICATION));
SetWindowText(hdlg, APP_NAME);
SetWindowText (GetDlgItem (hdlg, IDC_MESSAGE), "Veuillez patienter, traitement en cours");

CreateThread(NULL, 0, &Thread_Test, NULL, NULL, &Thread_TestID);

case ID_STOP:
{
unsigned Answer;
Answer = MessageBox (NULL, "Voulez vous interrompre la génération du\n" "fichier contenant les combinaisons?",
APP_NAME,
MB_YESNO | MB_ICONQUESTION);

if (Answer = IDYES)
{
if (TerminateThread (HANDLE (Thread_TestID), 1) == 0)
MessageBox (NULL,NULL,NULL,NULL);

a chaque fois ma messagebox saffiche.

des suggestions?

2 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Tu ne testes pas le code de sortie du thread ici mais la reussite ou non de TerminateThread(), pas la meme chose du tout.

ciao...
BruNews, MVP VC++
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
En fait tu trouve que TerminateThread échoue car tu ne lui a pas passé le handle du thread (la valeur retournée par CreateThread) mais son Id.