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.

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 );
 
}
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
UINT thread(LPVOID par)
{
  CMyCall*  pCall = (CMyCall*)par;
 
  if(pCall) pCall->Answer();
  if(pCall) pCall->Speak();
  if(pCall) pCall->Drop();
}
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.
La fonction qui se charge de ça, fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
pCall->Deallocate();
pCall = NULL;
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 ?

@+