Problème avec AfxBeginThread et classe managée
Bonjour,
Mon problème semble à première vue s'apparenter à celui décrit ici. La différence majeure est que AfxBeginThread() est appelée dans une classe managée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| __gc class ServiceThread
{
protected:
CWinThread *m_pThread;
static UINT ThreadFunc(LPVOID pvParam);
public:
bool runService();
};
bool ServiceThread::runService()
{
m_pThread = AfxBeginThread( (AFX_THREADPROC)ThreadFunc, this);
if(!m_pThread)
{
// Impossible de créer le thread !
return false;
}
return true;
} |
J'obtiens l'erreur suivante à la compilation :
Citation:
ServiceThread.cpp(35) : error C2665: 'AfxBeginThread' : aucune des surcharges 2 ne peut convertir le paramètre 2 à partir du type 'ServiceThread __gc *const '
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(4105): peut être 'CWinThread *AfxBeginThread(AFX_THREADPROC,LPVOID,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(4108): ou 'CWinThread *AfxBeginThread(CRuntimeClass *,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)'
lors de la tentative de mise en correspondance de la liste des arguments '(AFX_THREADPROC, ServiceThread __gc *const )'
Il y a donc un problème de conversion de ma classe managée vers le type LPVOID que je n'arrive pas à résoudre.
Si vous avez une solution, elle sera la bienvenue! :D