Bonjour,
Je vous écris afin de faire part d'un soucis dans l'un des tutos (et vous expliquer mon problème qui persiste :p) :
http://c.developpez.com/faq/vc/?page...opWorkerThread
Celui-ci consiste en l'arrêt d'un Thread MFC via l'utilisation "propre" des Handlers.
J'ai une appli MFC basé sur une CDialog. J'ai voulu mettre le tuto en place car j'ai un soucis (qui persiste) lorsque je veux arreter un thread en cours quand la CDialog est fermé.
J'arrive a fermer convenablement le thread lors d'un clic sur un bouton, mais pas lors de la fermeture de l'appli. Dans ce deuxième cas, j'ai un memory leak.
Dans votre tuto, vous déclarez deux fois des HANDLE. Certains en membres de la classe et d'autres dans le constructeur. Les premiers n'étant pas utilisés après.
Il me reste un problème concernant l'application de ce tuto : Si je suis le tuto à la lettre, le thread se termine bien, mais le
bloque l'appli malgré la présence de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ::WaitForSingleObject(m_hWaitThread, INFINITE);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if(::WaitForSingleObject(pView->m_hEndThread, 0) == WAIT_OBJECT_0) { pView->m_sText = "Calcul annulé."; ::PostMessage(hWnd, MY_WM_UPDATE, (WPARAM)0, (LPARAM)0); pView->m_cRatio.EnableWindow(true); pView->m_bThread = false; ::SetEvent(pView->m_hWaitThread); return result; }
Partager