UINT CMyAPI::StartOpenThread(LPVOID lpVoid) { CString strFuncName="MyAPI::StartOpenThread"; CMyAPI *nvr= (MyAPI*)lpVoid; nvr->m_lValUID=nvr->someWorkMethod(); SetEvent(nvr->m_hEvent); return 0; } long CMyAPI::APIOpen() { long lRet=-1; if(m_pThread==NULL) { m_hEvent=CreateEvent(NULL,TRUE,FALSE,NULL); m_pThread=AfxBeginThread(CmyAPI::StartOpenThread,this); int nRet = WaitForSingleObject(m_hEvent,25000); ResetEvent(m_hEvent); CloseHandle(m_hEvent); m_hEvent=NULL; m_pThread = NULL; lRet=m_lValUID; } return lRet; }
long m_lValUID; HANDLE m_hEvent; CWinThread *m_pThread; static UINT StartOpenThread(LPVOID lpVoid); and initialize on Constructor m_lValUID=-1; m_pThread=NULL; m_hEvent=NULL;
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)