Re-Bonjour,
J'ai un pointeur sur un objet de la classe CMyCall dont j'aimerais tester la validité au cours de l'exécution du programme.
Or dans ce thread, j'aimerais tester pCall avant de faire des actions dessus (answer, speak, drop)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void f1(CMyCall* pCall) { f2(pCall); } void f2(CMyCall* pCall) { ... //Lance un thread avec pCall en paramètre AfxBeginThread( (AFX_THREADPROC) _ThreadProc, (LPVOID) pCall ); }
Donc tout le problème est que pCall peut être détruit ailleurs en cours de programme, et ensuite mis à NULL, lorsque l'appel a été raccroché par l'autre partie par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 UINT thread(LPVOID par) { CMyCall* pCall = (CMyCall*)par; if(pCall) pCall->Answer(); if(pCall) pCall->Speak(); if(pCall) pCall->Drop(); }
La fonction qui se charge de ça, fait :
Quelle est la solution pour avoir accès au test if(pCall) dans mon thread, car là tel que j'ai fait le pointeur passé n'est pas averti de la mise à NULL ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pCall->Deallocate(); pCall = NULL;
@+
Partager