Terminer un thread?

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 - 3 nov. 2004 à 00:08
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 3 nov. 2004 à 08:55
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 nov. 2004 à 00:18
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++
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
3 nov. 2004 à 08:55
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.
0
Rejoignez-nous